diff options
Diffstat (limited to 'dzref')
| -rwxr-xr-x | dzref | 23 |
1 files changed, 14 insertions, 9 deletions
@@ -38,17 +38,22 @@ Windows←{ # LAYER 6: Everything else -Join←{ - C←(<⟨⟩)⥊⊸∾⌜´⊢ # Cartesian array product +Join←(1≠=)◶⟨∨´1≠=⌜,1⟩◶{ + # List of lists + i←j←¯1 ⋄ e←⟨⟩ ⋄ a←𝕩 + {{e↩a⊑˜i↩𝕩⋄j↩¯1}⍟(i⊸≠)𝕩⋄(j↩j+1)⊑e}⌜/≠⌜𝕩 +}‿{ + # Multidimensional ! IsArray 𝕩 - s←≢¨𝕩 - d←≠⊑s - ! ∧´⥊d=≠¨s + n←≠z←⥊𝕩 ⋄ s←≢⌜z ⋄ d←≠0⊑s + ! ∧´d=≠⌜s ! d≥=𝕩 - l←(≢𝕩){(𝕩⊑⟜≢a⊑˜(j=𝕩)⊸×)¨↕𝕨}¨j←↕r←=a←𝕩 - ! (r↑¨s)≡C l - i←C{p←+´¨↑𝕩⋄(↕⊑⌽p)-𝕩/¯1↓p}¨l - >i<¨⊸⊏¨l/𝕩 + q←1 ⋄ l←(≢𝕩){m←𝕩⊸⊑⌜s ⋄ r←⊑⟜m⌜q×↕𝕨 ⋄ !m≡n⥊r⊣⌜↕q ⋄ q×↩𝕨 ⋄ r}¨○⌽↕=𝕩 + t←(=𝕩)↓0⊑s + ! ∧´(t≡(=𝕩)⊸↓)⌜s + i←<0 ⋄ q↩<1 + {s←0⋄p←{o←s⋄s+↩𝕩⋄o}⌜𝕩 ⋄ j←↕s ⋄ i↩(j⊢⌜i)+(j-𝕩/p)×⌜q ⋄ q×⌜˜↩𝕩/𝕩}⌜l + i(0<≠t)◶⟨⊑⟜⥊¨,{ti←t⥊↕tp←×´t⋄((tp×𝕨)+⌜ti)⊑⟜⥊¨𝕩⊣⌜ti}⟩(⌽l)/𝕩 }⍟(0<≠∘⥊) ∾ ↩ Join ⊘ ∾ |
