aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-06-25 20:10:01 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-06-25 20:10:01 -0400
commit3e565a092bba840fc556ea9b6850aed29313df56 (patch)
tree63d1a2824f8bd769f2692790a4258a504f69437a
parent6a49771df6bbd4755720c4e7b53301b2a010db2e (diff)
Switch c.bqn to vector reduce
-rwxr-xr-xc.bqn12
1 files changed, 7 insertions, 5 deletions
diff --git a/c.bqn b/c.bqn
index e76fb44b..6199fe01 100755
--- a/c.bqn
+++ b/c.bqn
@@ -1,6 +1,8 @@
#!/usr/bin/env bqn
-⊔↩((↕1+(>⌈´))=¨<)∘⊣ /¨⟜< ↕∘≠⍠⊢
+reduce←{r←𝕩⋄{(>𝔽¨_r)⍠(><⊸(𝔽¨_r))}}⊑⟨´⟩
+´↩_reduce
+⊔↩((↕1+⌈´)=¨<)∘⊣ /¨⟜< ↕∘≠⍠⊢
⍷↩∪
Base←{+⟜(𝕨⊸×)´⌽𝕩}
@@ -28,10 +30,10 @@ vi←≠charSet
Tokenize←{
args←charSet⊸⊐¨𝕨⋄c←charSet⊐𝕩
- c(/˜)↩¬<○(⌈`↕∘≠⊸×)´((⊑bS)∾bR)=⌜c
+ c(/˜)↩¬<○(⌈`↕∘≠⊸×)´<˘((⊑bS)∾bR)=⌜c
w←(<´≠↕0∾⊢)l←c∊∾bD‿bN‿bA
id←⍷args∾(bA∊˜w/c)⍒⊸⊏i←(1-˜l×+`w)⊔c
- nv←>+´bA∊˜⊑¨id
+ nv←+´bA∊˜⊑¨id
c↩(w∨¬l∨c∊bW)/(vi+id⊐i)⌾(w⊸/)c
c(/˜)↩¬(1⌾⊑1⌽1⌾⊑)⊸∧c∊bS
⟨c,nv,nv-≠args,nv↓id⟩
@@ -44,7 +46,7 @@ Parse←{
na←(2×sep)+f×1+l↑0∾c∨v
e←/c⋄d←+`o-c
ed←e⊏d⋄b←(⍋⍋ed)⊏(⍋⊏⟜d)⊸⊏/o
- g←⊔ed∾0⋄s←e-(e⊏˜∾(⍋⊏⊣)¨´⍉2↕g)⌾((∾1↓g)⊸⊏)l¨e
+ g←⊔ed∾0⋄s←e-(e⊏˜∾(<(⍋⊏⊣)´)˘2↕g)⌾((∾1↓g)⊸⊏)l¨e
fe←f×(l-1)++`(-⊸≍s)⌾((e≍b)⊸⊏)l⥊0
fe⌊↩(l-1)-l↑(⌈`↕∘≠⊸×)⌾⌽1∾˜sep
ia←+`l↑0∾f-l↑/⁼∧f/fe
@@ -60,7 +62,7 @@ GenF64←{
l←2(⌊⋆⁼)𝕩
(Hex"44")∾2 Base˘⌽8‿8(⊣⥊×´⊸↑)∾⟨⥊0,11 Enc2 1023+l,(0⌈l)Enc2𝕩⟩
}
-MakeTab←{{(≠chF)↑⊑¨(chF⊐𝕨)⊔𝕩}○∾⟜(⥊¨∘⥊¨)´⍉(2(÷˜∾⊣)≢)⊸⥊𝕩}
+MakeTab←{{(≠chF)↑⊑¨(chF⊐𝕨)⊔𝕩}○∾⟜(⥊¨∘⥊¨)´<˘⍉(2(÷˜∾⊣)≢)⊸⥊𝕩}
tab1←MakeTab⟨
"⊣⊢" , 2⥊<⟨⟩
"|-⌈⌊√" , (Hex"99")+(↕4)∾6