diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-08-08 22:22:27 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-08-08 22:23:22 -0400 |
| commit | cddcb28be923b17a13f25a5601da55e2f6e097ee (patch) | |
| tree | c3a913e614ea94e97636818b141fe18c68393ab8 /src | |
| parent | 4c6591c8981ec5cc533173a9136c3d870c6a7862 (diff) | |
Integrate Membership into Index-of implementation
Diffstat (limited to 'src')
| -rw-r--r-- | src/r.bqn | 24 |
1 files changed, 14 insertions, 10 deletions
@@ -391,14 +391,18 @@ _bins←{ ⍒ ← Cmp˜ _grade_ 1 ⊘ (Cmp˜ _bins) # Searching -IndexOf←{ - c←1-˜=𝕨 - ! 0≤c - 𝕨 ∧○(8<≠∘⥊)◶⟨ - (0<≠𝕨)◶⟨0⎉c∘⊢, (+˝∧`)≢⌜○((0<c)◶⟨⊢,<⎉c⟩)⟩ - { g←⌽⍒𝕨 ⋄ i←g⊏˜0⌈1-˜(g⊏𝕨)⍋𝕩 ⋄ i+(i-˜≠𝕨)×(i⊏𝕨)≢⎉c𝕩 } - ⟩𝕩 -}⟜ToArray +_search←{ # 0 for ∊˜, 1 for ⊐ + ind ← 𝕗 + red ← 𝕗⊑⟨¬∧˝,+˝∧`⟩ + { + c←1-˜=𝕨 + ! 0≤c + 𝕨 ∧○(8<≠∘⥊)◶⟨ + (0<≠𝕨)◶⟨0⎉c∘⊢, Red≢⌜○((0<c)◶⟨⊢,<⎉c⟩)⟩ + { g←⌽⍒𝕨 ⋄ i←g⊏˜0⌈1-˜(g⊏𝕨)⍋𝕩 ⋄ (≠𝕨)(⊣+i⊸-⊸×)⍟ind(i⊏𝕨)≡⎉c𝕩 } + ⟩ ToArray𝕩 + } +} UniqueMask←{ ! 1≤=𝕩 g←⍋𝕩 @@ -410,8 +414,8 @@ Find←{ 𝕨 ≡⎉r (≢𝕨) ↕⎉r 𝕩 } -⊐ ← !∘0 ⊘ IndexOf -∊ ← UniqueMask ⊘ (⊐˜<≠∘⊢) +⊐ ← !∘0 ⊘ (1 _search) +∊ ← UniqueMask ⊘ (0 _search˜) ⍷ ← ∊⊸/ ⊘ Find ReorderAxes←{ |
