diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-08-08 10:23:21 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-08-08 10:23:21 -0400 |
| commit | e82d439a595d472d12f85b3879cd9d0728c48e8f (patch) | |
| tree | f113eb11889bae02e60dc4d8f35790d8fb01103f /src | |
| parent | 56bb21b0e696f4b64adc490f7b07519f4baba88a (diff) | |
Prefer ⌜ to ¨ in runtime
Diffstat (limited to 'src')
| -rw-r--r-- | src/r.bqn | 119 |
1 files changed, 60 insertions, 59 deletions
@@ -55,17 +55,6 @@ _perv←{ # Pervasion +○IsArray◶⟨𝔽⋄R⌜⊘(>○IsArray◶{𝕨{𝕗R𝕩}⌜𝕩}‿{𝕩{𝕩R𝕗}⌜𝕨})⋄R _eachd⟩ } -⌜ ↩ {𝔽⌜○ToArray} -¨ ↩ {(𝔽⌜)⊘(𝔽_eachd○ToArray)} - -match←{(0⊑𝕨)◶(1⊑𝕨)‿𝕩}´⟨ - ⟨=○IsArray, 0⟩ - ⟨IsArray∘⊢, =⟩ - ⟨=○= , 0⟩ - ⟨1×´=¨○≢ , 0⟩ - {1×´⥊𝕨Match¨𝕩} -⟩ - Cmp0 ← ≤˜-≤ Cmp1 ← (0<1×´≢∘⊢)◶⟨1, IsArray∘⊢◶(1-2×≤)‿{𝕨Cmp1𝕩}⟜(0⊑⥊)⟩ Cmp ← +○IsArray◶⟨ @@ -86,24 +75,24 @@ _grade←{ B←l⊸≤◶⊢‿l (↕l){ i←-d←𝕨 ⋄ j←ei←ej←0 - e←3 ⋄ G←GT○(⊑⟜(m⊸ר⍟(1-m=1)𝕩)) ⋄ c←⟨G,0,1,2⟩ + e←3 ⋄ G←GT○(⊑⟜(m⊸×⌜⍟(1-m=1)𝕩)) ⋄ c←⟨G,0,1,2⟩ s←(8≤d)⊑⟨+,{(𝕩-1){𝕩⋄e↩2⋄j↩i⋄i↩𝕩}⍟(1-G)⍟(1-e)𝕩}⟩ N←{i↩d+𝕨⋄ej↩B d+ei↩B j↩d+𝕩⋄e↩l≤j⋄S ei⋄i R j} R←{𝕨e◶c𝕩}◶{e+↩2×ei=i↩1+𝕨⋄𝕨}‿{e+↩ej=j↩1+𝕩⋄𝕩}‿N - {(i R j)⊑𝕩}⟜𝕩¨𝕩 - }´(2⋆ni-1+⊢)¨↕ni←-⌊-2 Log l+l=0 + {(i R j)⊑𝕩}⟜𝕩⌜𝕩 + }´(2⋆ni-1+⊢)⌜↕ni←-⌊-2 Log l+l=0 } Indices←{ ! 1==𝕩 l←≠𝕩 { - ! 1×´Nat¨𝕩 + ! 1×´Nat⌜𝕩 k←l-1 N ← ((⊢+-×0=𝕩⊑˜⊢)`k⊸-⌜↕l)⊑˜k-⊢ # Next nonzero E ← ⊑⟜(+`𝕩) ei←E i←N 0 - {{ei↩E i↩N𝕩+1⋄i}⍟(𝕩=ei)i}¨↕E k + {{ei↩E i↩N𝕩+1⋄i}⍟(𝕩=ei)i}⌜↕E k }⍟(0<l)𝕩 } @@ -113,9 +102,18 @@ _under_←{ g←Cmp0 _grade gi←⥊𝔾s⥊i P←(≠g)⊸≤◶⟨(⊑⟜g)⊑gi˜,l⟩ e←P j←0 - s⥊{e=𝕩}◶⟨⊑⟜(⥊𝕩),{𝕩⋄r←(j⊑g)⊑v⋄e↩P j↩1+j⋄r}⟩¨i + s⥊{e=𝕩}◶⟨⊑⟜(⥊𝕩),{𝕩⋄r←(j⊑g)⊑v⋄e↩P j↩1+j⋄r}⟩⌜i } -⌾ ← _under_ + +¨ ↩ {(𝔽⌜)⊘(𝔽_eachd)○ToArray} + +match←{(0⊑𝕨)◶(1⊑𝕨)‿𝕩}´⟨ + ⟨=○IsArray, 0⟩ + ⟨IsArray∘⊢, =⟩ + ⟨=○= , 0⟩ + ⟨1×´=¨○≢ , 0⟩ + {1×´⥊𝕨Match¨𝕩} +⟩ + ↩ + _perv - ↩ - _perv @@ -139,14 +137,14 @@ identity ← (0⊑⟨!∘0⟩) {(0⊑𝕨){𝕗=𝕩}◶𝕩‿(1⊑𝕨)}´ ⟨ SelSub←{ ! IsArray 𝕨 - ! 1×´⥊Int¨ 𝕨 + ! 1×´⥊Int⌜ 𝕨 l←≠𝕩 - ! 1×´⥊ ((-l)⊸≤×l⊸>)¨ 𝕨 - ((⊢+l×0>⊢)¨𝕨)(1==𝕩)◶{ + ! 1×´⥊ ((-l)⊸≤×l⊸>)⌜ 𝕨 + ((⊢+l×0>⊢)⌜𝕨)(1==𝕩)◶{ c←1×´s←1 Cell 𝕩 𝕨((⥊𝕩)⊑˜c⊸×⊸+)⌜s⥊↕c }‿{ - ⊑⟜𝕩¨𝕨 + ⊑⟜𝕩⌜𝕨 }𝕩 } @@ -155,34 +153,34 @@ Deshape←IsArray◶{⟨𝕩⟩}‿⥊ Reshape←{ ! 1≥=𝕨 𝕨↩Deshape 𝕨 - ! ∧´Nat¨𝕨 + ! ∧´Nat⌜𝕨 l←×´𝕨 n←×´≢𝕩 𝕨⥊{ - 𝕩(0<n)◶⟨Type⊸(⊣⌜)⋄⥊⊸{⊑⟜𝕨¨n|𝕩}⟩↕l + 𝕩(0<n)◶⟨Type⊸(⊣⌜)⋄⥊⊸{⊑⟜𝕨⌜n|𝕩}⟩↕l }⍟(l≠n)𝕩 }⟜ToArray ⥊ ↩ Deshape ⊘ Reshape Range←{ I←{!Nat𝕩⋄↕𝕩} - M←{!1==𝕩⋄(<⟨⟩)⥊⊸∾⌜´I¨𝕩} + M←{!1==𝕩⋄(<⟨⟩)⥊⊸∾⌜´I⌜𝕩} IsArray◶I‿M 𝕩 } -Depth←IsArray◶0‿{1+0⌈´Depth¨⥊𝕩} +Depth←IsArray◶0‿{1+0⌈´Depth⌜⥊𝕩} ≡ ← Depth ⊘ Match ≢ ↩ ≢ ⊘ (¬Match) -DropV← {⊑⟜𝕩¨𝕨+↕𝕨-˜≠𝕩} +DropV← {⊑⟜𝕩⌜𝕨+↕𝕨-˜≠𝕩} Cell ← DropV⟜≢ Pair ← {⟨𝕩⟩} ⊘ {⟨𝕨,𝕩⟩} Merge←{ c←≢0⊑⥊𝕩 - ! ∧´⥊(c≡≢)¨𝕩 + ! ∧´(c≡≢)⌜⥊𝕩 𝕩⊑⟜⥊˜⌜c⥊↕×´c }⍟(0<≠∘⥊) > ↩ Merge ⊘ > @@ -192,7 +190,7 @@ _depthOp_←{ neg←0>n←𝕨𝔾_ranks𝕩 ⋄ F←𝔽 _d←{ R←(𝕗+neg)_d - 𝕨(×⟜2⊸+´2⥊(neg∧𝕗≥0)∨(0⌈𝕗)≥Pair○≡)◶(⟨R¨⋄R⟜𝕩¨∘⊣⋄(𝕨R⊢)¨∘⊢⋄F⟩)𝕩 + 𝕨(×⟜2⊸+´2⥊(neg∧𝕗≥0)∨(0⌈𝕗)≥Pair○≡)◶(⟨R¨⋄R⟜𝕩⌜∘⊣⋄(𝕨R⊢)⌜∘⊢⋄F⟩)𝕩 } 𝕨 n _d 𝕩 } @@ -200,11 +198,11 @@ _depthOp_←{ _rankOp_←{ k←𝕨(Pair○= (0≤⊢)◶⟨⌊⟜-,0⌈-⟩¨ 𝔾_ranks)𝕩 Enc←{ - f←⊑⟜(≢𝕩)¨↕𝕨 + f←⊑⟜(≢𝕩)⌜↕𝕨 c←×´s←𝕨Cell𝕩 - f⥊⊑⟜(⥊𝕩)¨∘((s⥊↕c)+c×⊢)¨↕×´f + f⥊⊑⟜(⥊𝕩)⌜∘((s⥊↕c)+c×⊢)⌜↕×´f } - Enc↩(>⟜0+≥⟜=)◶⟨<⊢,Enc,<¨⊢⟩ + Enc↩(>⟜0+≥⟜=)◶⟨<⊢,Enc,<⌜⊢⟩ > ((0⊑k)Enc𝕨) 𝔽¨ ((1-˜≠)⊸⊑k)Enc𝕩 } ⎉ ← _rankOp_ @@ -234,7 +232,7 @@ Select←ToArray⊸(SelSub _onAxes_ 1) JoinTo←∨○(1≠=)◶∾‿{ s←𝕨Pair○≢𝕩 - a←1⌈´k←≠¨s + a←1⌈´k←≠⌜s ! ∧´1≥a-k c←(k¬a)+⟜(↕a-1)⊸⊏¨s ! ≡´c @@ -247,27 +245,27 @@ Take←{ ! Int 𝕨 l←≠𝕩 ⋄ n←𝕨<0 ⋄ e←l⌊r←|𝕨 ⋄ s←⟨r⟩ i ← 𝕩{s∾↩c←1 Cell 𝕨⋄𝕩(×+⌜↕∘⊢)×´c}⍟(1≠=𝕩) (l-e)+⍟n ↕e - s ⥊ 𝕩{(⥊𝕩)n◶⟨∾,∾˜⟩(r-e)⥊Type𝕗}⍟(l<r) ⊑⟜(⥊𝕩)¨i + s ⥊ 𝕩{(⥊𝕩)n◶⟨∾,∾˜⟩(r-e)⥊Type𝕗}⍟(l<r) ⊑⟜(⥊𝕩)⌜i } 𝕨 T _onAxes_ 0 (⟨1⟩⥊˜0⌈𝕨-○≠⊢)⊸∾∘≢⊸⥊𝕩 } -Prefixes ← {!1≤=𝕩 ⋄ (↕1+≠𝕩)Take¨<𝕩} +Prefixes ← {!1≤=𝕩 ⋄ Take⟜𝕩⌜↕1+≠𝕩} ↑ ← Prefixes ⊘ Take Drop←{ s←(≠𝕨)(⊣↑⊢∾˜1⥊˜0⌈-⟜≠)≢𝕩 ((sׯ1⋆𝕨>0)+(-s)⌈s⌊𝕨)↑𝕩 } -Suffixes ← {!1≤=𝕩 ⋄ (↕1+≠𝕩)Drop¨<𝕩} +Suffixes ← {!1≤=𝕩 ⋄ Drop⟜𝕩⌜↕1+≠𝕩} ↓ ← Suffixes ⊘ Drop Windows←{ ! IsArray 𝕩 ! 1≥=𝕨 ! 𝕨≤○≠≢𝕩 - ! ∧´Nat¨⥊𝕨 + ! ∧´Nat⌜⥊𝕨 s←(≠𝕨)↑≢𝕩 ! ∧´𝕨≤1+s - 𝕨{(∾⟜(𝕨≠⊸↓≢𝕩)∘≢⥊>)<¨⊸⊏⟜𝕩¨s(¬+⌜○Range⊢)⥊𝕨}⍟(0<≠𝕨)𝕩 + 𝕨{(∾⟜(𝕨≠⊸↓≢𝕩)∘≢⥊>)<⌜⊸⊏⟜𝕩¨s(¬+⌜○Range⊢)⥊𝕨}⍟(0<≠𝕨)𝕩 } Reverse ← {!1≤=𝕩 ⋄ (-↕⊸¬≠𝕩)⊏𝕩} @@ -281,31 +279,31 @@ Replicate ← {0<=𝕨}◶(⥊˜⟜≠Rep⊢)‿{!𝕨=○≠𝕩⋄𝕨Rep𝕩} / ← Indices ⊘ Replicate -Join←(1≠=)◶⟨∨´1≠=¨,1⟩◶{ +Join←(1≠=)◶⟨∨´1≠=⌜,1⟩◶{ # List of lists i←j←¯1⋄e←⟨⟩⋄a←𝕩 - {{e↩a⊑˜i↩𝕩⋄j↩¯1}⍟(i⊸≠)𝕩⋄(j↩j+1)⊑e}¨/≠¨𝕩 + {{e↩a⊑˜i↩𝕩⋄j↩¯1}⍟(i⊸≠)𝕩⋄(j↩j+1)⊑e}⌜/≠⌜𝕩 }‿{ # Multidimensional C←(<⟨⟩)⥊⊸∾⌜´⊢ # Cartesian array product ! IsArray 𝕩 - s←≢¨𝕩 + s←≢⌜𝕩 d←≠0⊑⥊s - ! ∧´⥊d=≠¨s + ! ∧´⥊d=≠⌜s ! d≥=𝕩 - l←(≢𝕩){(𝕩⊑⟜≢a Pick1˜(j=𝕩)⊸×)¨↕𝕨}¨j←↕r←=a←𝕩 - ! (r↑¨s)≡C l - i←C{p←+´¨↑𝕩⋄(↕0⊑⌽p)-𝕩/¯1↓p}¨l - >i<¨⊸⊏¨l/𝕩 + l←(≢𝕩){(𝕩⊑⟜≢a Pick1˜(j=𝕩)⊸×)⌜↕𝕨}¨j←↕r←=a←𝕩 + ! (r⊸↑⌜s)≡C l + i←C{p←+´⌜↑𝕩⋄(↕0⊑⌽p)-𝕩/¯1↓p}⌜l + >i<⌜⊸⊏¨l/𝕩 }⍟(0<≠∘⥊) Group←{ ! IsArray 𝕩 - Chk←{!1==𝕩⋄!∧´Int¨𝕩⋄!∧´¯1≤𝕩⋄≠𝕩} - l←(1<≡)◶Chk‿{!1==𝕩⋄Chk¨𝕩}𝕨 + Chk←{!1==𝕩⋄!∧´Int⌜𝕩⋄!∧´¯1≤𝕩⋄≠𝕩} + l←(1<≡)◶Chk‿{!1==𝕩⋄Chk⌜𝕩}𝕨 ! l≤○≠≢𝕩 ! ∧´l=l≠⊸↑≢𝕩 - (𝕨⊸=/𝕩˜)¨↕1+¯1⌈´⚇1𝕨 + (𝕨⊸=/𝕩˜)⌜↕1+¯1⌈´⚇1𝕨 } ∾ ↩ Join ⊘ JoinTo @@ -314,19 +312,19 @@ Group←{ Pick1←{ ! 1==𝕨 ! 𝕨=○≠s←≢𝕩 - ! ∧´Int¨𝕨 + ! ∧´Int⌜𝕨 ! ∧´𝕨(≥⟜-∧<)s 𝕨↩𝕨+s×𝕨<0 (⥊𝕩)⊑˜0(⊑⟜𝕨+⊑⟜s×⊢)´-↕⊸¬≠𝕨 } -Pickd←(∨´∘⥊IsArray¨∘⊣)◶Pick1‿{Pickd⟜𝕩¨𝕨} +Pickd←(∨´IsArray⌜∘⥊∘⊣)◶Pick1‿{Pickd⟜𝕩⌜𝕨} Pick←IsArray◶⥊‿⊢⊸Pickd # Searching IndexOf←{ c←1-˜=𝕨 ! 0≤c - 𝕨 (0<≠𝕨)◶⟨0⎉c∘⊢,(+˝∧`)≢⌜○((0<c)◶⟨⊢,<⎉c⟩)⟩ 𝕩 + 𝕨 (0<≠𝕨)◶⟨0⎉c∘⊢,(+˝∧`)≢⌜○((0<c)◶⟨⊢,<⎉c⟩)⟩ ToArray𝕩 } UniqueMask←{ ! 1≤=𝕩 @@ -348,11 +346,11 @@ ReorderAxes←{ ! 1≥=𝕨 𝕨↩⥊𝕨 ! 𝕨≤○≠≢𝕩 - ! ∧´Nat¨⥊𝕨 + ! ∧´Nat⌜⥊𝕨 r←(=𝕩)-+´¬∊𝕨 ! ∧´𝕨<r 𝕨↩𝕨∾𝕨(¬∘∊˜/⊢)↕r - (𝕨⊸⊏Pick𝕩˜)¨↕⌊´¨𝕨⊔≢𝕩 + (𝕨⊸⊏Pick𝕩˜)⌜↕⌊´⌜𝕨⊔≢𝕩 } Transpose←(=-1˜)⊸ReorderAxes⍟(0<=) ⍉ ← Transpose ⊘ ReorderAxes @@ -365,10 +363,10 @@ CmpLen ← { r←𝕨⌊○≠𝕩 l←𝕨{ i←+´∧`𝕨=𝕩 - m←×´⊑⟜𝕨¨↕i + m←×´⊑⟜𝕨⌜↕i {c↩×-´𝕩⋄m↩m×⌊´𝕩}∘(⊑¨⟜𝕨‿𝕩)⍟(r⊸>)i m - }○(((-1+↕r)+≠)⊸{⊑⟜𝕩¨𝕨})𝕩 + }○(((-1+↕r)+≠)⊸{⊑⟜𝕩⌜𝕨})𝕩 ⟨l,c⟩ }𝕩 } @@ -395,12 +393,12 @@ _bins←{ ! c≤=𝕩 lw←×´sw←1 Cell 𝕨 cw←lw 𝔽○(⊑⟜(⥊𝕨)) _getCellCmp 0 - ! 0⊸<◶⟨1,∧´0≤˜·cw¨⟜(lw⊸+)lw×↕∘-⟜1⟩≠𝕨 + ! 0⊸<◶⟨1,∧´0≤˜·cw⟜(lw⊸+)⌜lw×↕∘-⟜1⟩≠𝕨 cx←c-˜=𝕩 sx←cx Cell 𝕩 ⋄ lc←sw CmpLen sx cc ← (⊑⟜(⥊𝕨))⊸𝔽⟜(⊑⟜(⥊𝕩)) _getCellCmp´ lc B←(×´sw)⊸×⊸Cc≤0˜ - (≠𝕨) {B⟜𝕩 _binSearch 𝕨}¨ (×´sx) × ⥊⟜(↕×´)⊑⟜(≢𝕩)¨↕cx + (≠𝕨)⊸{B⟜𝕩 _binSearch 𝕨}⌜ (×´sx) × ⥊⟜(↕×´)⊑⟜(≢𝕩)⌜↕cx } ⍋ ← Cmp _grade ⊘ ( Cmp _bins) @@ -425,7 +423,7 @@ inverse ← {(⊑(0⊏𝕩)⊐<) ⊑ ((1⊏𝕩)∾⟨!∘0⟩)˜} ⍉ (2∾˜2 ∧, ⊢⊘(÷˜) ∨, ⊢⊘(-˜÷1-⊢) <, {!IsArray𝕩⋄!0==𝕩⋄⊑𝕩}⊘(!∘0) - /, {!(⍋≡↕∘≠)𝕩⋄≠¨⊔𝕩}⊘(!∘0) + /, {!(⍋≡↕∘≠)𝕩⋄≠⌜⊔𝕩}⊘(!∘0) ⟩ ⁼ ← {Inverse 𝕗} @@ -439,3 +437,6 @@ _repeat_←{ (|⊑<⟜0⊑pos‿neg˜)⚇0 n } ⍟ ↩ _repeat_ + +⌜ ↩ {𝔽⌜○ToArray} +⌾ ← _under_ |
