diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-07-01 19:09:08 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-07-01 19:09:08 -0400 |
| commit | 35b312299a40ac6fc1725901e99b62239be2e5c9 (patch) | |
| tree | 6bb99ae4c4870ac4aee235a18a6967c8145ad0eb /spec/reference.bqn | |
| parent | 01fe8ee5bbba4631b12290a6f50b5412b7aaf096 (diff) | |
Test layer 6 structural and search functions
Diffstat (limited to 'spec/reference.bqn')
| -rw-r--r-- | spec/reference.bqn | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/spec/reference.bqn b/spec/reference.bqn index 9c82cda1..241be28a 100644 --- a/spec/reference.bqn +++ b/spec/reference.bqn @@ -317,7 +317,7 @@ Replicate ← {0<≠≢𝕨}◶(⥊˜⟜≠Rep⊢)‿{!𝕨=○≠𝕩⋄𝕨Rep ⍝ LAYER 6: Everything else ∾ ↩ Join ⊘ JoinTo -⊔ ← ⊔⟜(↕∘≠⚇1) ⊘ Group +⊔ ← ⊔⟜(↕≠⚇1) ⊘ Group ⍉ ← Transpose ⊘ ReorderAxes ⊐ ← !∘0 ⊘ IndexOf ∊ ← UniqueMask ⊘ (⊐˜<≠∘⊢) @@ -332,11 +332,11 @@ Join←{ C←(<⟨⟩)⥊⊸∾⌜´⊢ ⍝ Cartesian array product ! IsArray 𝕩 s←≢¨𝕩 - c←≠⊑s - ! ∧´c=≠¨s - ! c≥≠≢𝕩 - l←(≢𝕩){(𝕩⊑a⊑˜(j=𝕩)⊸×)¨↕𝕨}¨j←↕≠≢a←𝕩 - ! s≡C l + d←≠⊑s + ! ∧´⥊d=≠¨s + ! d≥≠≢𝕩 + l←(≢𝕩){(𝕩⊑⟜≢a⊑˜(j=𝕩)⊸×)¨↕𝕨}¨j←↕r←≠≢a←𝕩 + ! (r↑¨s)≡C l i←C{p←+´¨↑𝕩⋄(↕⊑⌽p)-𝕩/¯1↓p}¨l >i<¨⊸⊏¨l/𝕩 }⍟(0<≠∘⥊) @@ -347,35 +347,39 @@ Group←{ l←(1<≡)◶Chk‿{!1=≠≢𝕩⋄Chk¨𝕩}𝕨 ! l≤○≠≢𝕩 ! ∧´l=l≠⊸↑≢𝕩 - (𝕨⊸=/𝕩˜)¨↕1+0⌈´⚇1𝕨 + (𝕨⊸=/𝕩˜)¨↕1+¯1⌈´⚇1𝕨 } -ReorderAxes←{ - 𝕩↩<⍟(0=≡)𝕩 - ! 𝕨≤○≠≢𝕩 - r←(≠≢𝕩)-+´¬∊𝕨 - ! ∧´𝕨<r - 𝕨↩𝕨∾𝕨(¬∘∊˜/⊢)↕r - (𝕨⊸⊏⊑𝕩˜)¨↕×´¨𝕨⊔≢𝕩 -} -Transpose←(≠∘≢-1˜)⊸ReorderAxes⍟(0<≠∘≢) - ⍝ Searching IndexOf←{ c←1-˜≠≢𝕨 ! 0≤c - 𝕨 (0<≠𝕨)◶⟨0⎉c∘⊢,((+´<˘)∧`)≢⎉c⎉∞‿c⟩ 𝕩 + 𝕨 (0<≠𝕨)◶⟨0⎉c∘⊢,((+´<˘)∧`)≢⎉c⎉c‿∞⟩ 𝕩 } UniqueMask←{ ! 1≤≠≢𝕩 u←0↑𝕩 - {𝕩∊u}⊘{u↩u∾𝕩⋄1}‿0˘𝕩 + {⊑𝕩∊u}⊘{u↩u∾𝕩⋄1}‿0˘𝕩 } Find←{ r←≠s←≢𝕨 - 𝕨≡⎉r s↕⎉r 𝕩 + ! r≤≠≢𝕩 + 𝕨 ≡⎉r s ↕⎉r 𝕩 } +ReorderAxes←{ + 𝕩↩<⍟(0=≡)𝕩 + ! 1≥≠≢𝕨 + 𝕨↩⥊𝕨 + ! 𝕨≤○≠≢𝕩 + ! ∧´Nat¨⥊𝕨 + r←(≠≢𝕩)-+´¬∊𝕨 + ! ∧´𝕨<r + 𝕨↩𝕨∾𝕨(¬∘∊˜/⊢)↕r + (𝕨⊸⊏⊑𝕩˜)¨↕⌊´¨𝕨⊔≢𝕩 +} +Transpose←(≠∘≢-1˜)⊸ReorderAxes⍟(0<≠∘≢) + ⍝ Sorting Cmp ← ∨○IsArray◶{ ⍝ No arrays 𝕨(>-<)𝕩 ⍝ Assume they're numbers @@ -393,7 +397,7 @@ Cmp ← ∨○IsArray◶{ ⍝ No arrays _grade←{ ! 1≤≠≢𝕩 - i⊐+´˘(𝔽⎉∞‿¯1⎉¯1‿∞˜𝕩)(⌈⟜0+=⟜0⊸×)>⌜˜i←↕≠𝕩 + i⊐˜+´˘(𝔽⎉∞‿¯1⎉¯1‿∞˜𝕩)(⌈⟜0+=⟜0⊸×)>⌜˜i←↕≠𝕩 } _bins←{ r←1-˜≠≢𝕨 |
