From 6982a91a985f0961d3adce83bfd75a2d2cbb19ca Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Mon, 26 Apr 2021 17:56:14 -0400 Subject: Non-pervasive _search implementation with _getCellCmp --- src/r.bqn | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/r.bqn b/src/r.bqn index 0e6b5038..2136b78e 100644 --- a/src/r.bqn +++ b/src/r.bqn @@ -126,7 +126,7 @@ _getCellCmp ← { S←(l⊸=)◶{S∘(1+𝕩)⍟(0⊸=)a Ci○(𝕩⊸+)b}‿c S 0 } - (1-1=l)⊑(𝕩⍟(0⊸=)𝔽)‿Cc + (1=l)⊑Cc‿(𝕩⍟(0⊸=)𝔽) } Cmp ← +○IsArray◶⟨ Cmp0 @@ -185,6 +185,30 @@ _bins←{ ⍋ ← Cmp _grade_ 0 ⊘ (Cmp _bins) ⍒ ← Cmp˜ _grade_ 1 ⊘ (Cmp˜ _bins) +# Searching +_search←{ # 0 for ∊˜, 1 for ⊐ + ind ← 𝕗 + red ← 𝕗⊑⟨1-×´,+´×`⟩ + 0 Fill { + c←1-˜=𝕨 + "p⊐𝕩 or 𝕨∊p: p must have rank at least 1" ! 0≤c + "p⊐n or n∊p: Rank of n must be at least cell rank of p" ! c≤=𝕩 + n←≠𝕨 ⋄ k←1×´s←1 Cell 𝕨 ⋄ cx←c-˜=𝕩 + lx←1×´sh←cx↑≢𝕩 + sh ⥊ 𝕨 (0