From d232168a333f9b0a7675ab3829f0c34af0783883 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sat, 8 Aug 2020 10:53:05 -0400 Subject: Non-pervasive Merge implementation --- src/r.bqn | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/r.bqn b/src/r.bqn index d153a53d..264245a1 100644 --- a/src/r.bqn +++ b/src/r.bqn @@ -111,6 +111,8 @@ _under_←{ s⥊{e=𝕩}◶⟨⊑⟜(⥊𝕩),{𝕩⋄r←(j⊑g)⊑v⋄e↩P j↩1+j⋄r}⟩⌜i } +Deshape←IsArray◶{⟨𝕩⟩}‿⥊ + ¨ ↩ {(𝔽⌜)⊘(𝔽_eachd)○ToArray} match←{(0⊑𝕨)◶(1⊑𝕨)‿𝕩}´⟨ @@ -120,6 +122,15 @@ match←{(0⊑𝕨)◶(1⊑𝕨)‿𝕩}´⟨ ⟨1×´=¨○≢ , 0⟩ {1×´⥊𝕨Match¨𝕩} ⟩ +Depth←IsArray◶0‿{1+0(⊣-≤×-)´Depth⌜⥊𝕩} + +≡ ← Depth ⊘ Match + +Merge←{ + c←≢0⊑⥊𝕩 + ! 1×´(c≡≢)⌜⥊𝕩 + 𝕩⊑⟜Deshape˜⌜c⥊↕1×´c +}⍟(0<≠∘⥊)⍟IsArray + ↩ + _perv - ↩ - _perv @@ -134,7 +145,7 @@ match←{(0⊑𝕨)◶(1⊑𝕨)‿𝕩}´⟨ ∧ ← × ∨ ← (+-×) < ↩ {⟨⟩⥊⟨𝕩⟩} ⊘ ((1-≤˜) _perv) -> ↩ (1-≤) _perv +> ↩ Merge ⊘ ((1-≤) _perv) ≠ ↩ ≠ ⊘ ((1-=) _perv) = ↩ = ⊘ (= _perv) ≥ ← !∘0 ⊘ (≤˜_perv) @@ -154,8 +165,6 @@ SelSub←{ }𝕩 } - -Deshape←IsArray◶{⟨𝕩⟩}‿⥊ Reshape←{ ! 1≥=𝕨 𝕨↩Deshape 𝕨 @@ -174,20 +183,11 @@ Range←{ IsArray◶I‿M 𝕩 } -Depth←IsArray◶0‿{1+0⌈´Depth⌜⥊𝕩} - -≡ ← Depth ⊘ Match ≢ ↩ ≢ ⊘ (¬Match) Pair ← {⟨𝕩⟩} ⊘ {⟨𝕨,𝕩⟩} -Merge←{ - c←≢0⊑⥊𝕩 - ! ∧´(c≡≢)⌜⥊𝕩 - 𝕩⊑⟜⥊˜⌜c⥊↕×´c -}⍟(0<≠∘⥊) -> ↩ Merge ⊘ > ≍ ← >∘Pair _ranks ← {⟨2⟩⊘⟨1,0⟩((⊣-1+|)˜⟜≠⊑¨<∘⊢)⥊∘𝔽} _depthOp_←{ -- cgit v1.2.3