aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdc.bqn18
-rw-r--r--test/bcases.bqn1
2 files changed, 10 insertions, 9 deletions
diff --git a/dc.bqn b/dc.bqn
index 47799d04..5c191980 100755
--- a/dc.bqn
+++ b/dc.bqn
@@ -128,21 +128,21 @@ Compile←{
DParse ← {nv‿r𝕊𝕩:
g←⍋+`p←bB(⊣(≠⊸>ׯ1⋆2|⊢)⊐)𝕩
- r+↩(𝕩=1⊑bB)(⊣∧¬⊸∨=○(⌈`(1+↕∘≠)⊸×)⊢)(¯1⊸⌽⌾(g⊸⊏)3=r)∨1≤r
- lg←1⊸⌽⊸∨𝕩∊bL⋄o←p>0
- rev←⍋+`1+¯1↓(⍋∘⊏⟜lg⊸⊏g)((¯1∾⊣)(⊣⍋⊸⊏⊏˜-⊏˜⟜⍋)⟜⍋1(+`∘∾-∾˜)⊏)o∨lg∨𝕩∊bS
- g↩⍋+`rev⊏p
- gr←g⊏rev⋄𝕩⊏˜↩gr⋄r⊏˜↩gr⋄o⊏˜↩gr
- s←𝕩∊bS⋄ps←s∨o⋄a←𝕩∊2↑bG⋄lg↩¯1⊸⌽⊸∨𝕩∊bL
- r∧↩¬1⊸⌽⊸∨lg⋄r-↩ps∨a⋄op←r≥2⋄ro←op∨1⌽r=3
+ sl←1⊸⌽⊸∨𝕩∊bL⋄sr←¯1⊸⌽⌾(g⊸⊏)sl⋄sa←sl∨sr
+ g⊏˜↩⍋g⊏sl⋄r×↩¬sa⋄o←p>0
+ r+↩(sa<𝕩=1⊑bB)(⊣∧¬⊸∨=○(⌈`(1+↕∘≠)⊸×)⊢)(¯1⊸⌽⌾(g⊸⊏)3=r)∨1≤r
+ rev←⍋+`1+¯1↓g((¯1∾⊣)(⊣⍋⊸⊏⊏˜-⊏˜⟜⍋)⟜⍋1(+`∘∾-∾˜)⊏)o∨sl∨𝕩∊bS
+ g↩⍋+`rev⊏p⋄gr←g⊏rev⋄ll←1+2÷˜0(<-○/>)gr⊏sr-sl
+ g⊏˜↩⍋gr⊏sl⋄gr↩g⊏rev⋄𝕩⊏˜↩gr⋄r⊏˜↩gr⋄o⊏˜↩gr⋄l←/gr⊏sr>sl
+ s←𝕩∊bS⋄ps←s∨o∨gr⊏sl⋄a←𝕩∊2↑bG
+ r-↩ps∨a⋄op←r≥2⋄ro←op∨1⌽r=3
tr←(⌈`↕∘≠⊸ׯ1⌽ps)⊏r≥1
tf←(a≤○(⌈`(1+↕∘≠)⊸×)ps)∧2(|<≤)ps(⊢-⌈`∘×)+`¬ro
opa←op>1↓0∾˜ps∨a⋄os←⌽↕∘≠⊸(⊣-⌈`∘×)⌽¬ro∨¯1⌽op
oa←⌽/opa⋄fa←/(tf∨¬tr)∧(ro∧1⌽opa)<(r=1)∨op<¯1⌽opa
dy←fa⊏1↓0∾˜(tr∧r≥0)∨r=0
n←𝕩≥vi+nv⋄id←/n<𝕩≥vi⋄cn←/n∨𝕩≤¯1⊑bC⋄u←⍷ob←cn⊏𝕩
- lo←(o/𝕩)=4⊑bB⋄l←/𝕩=5⊑bB⋄ll←1+lo/1(↓--⊸↓)(o∾1)/+`s∾0
- l∾↩sd←/1⊸⌽⊸<lg⋄ll∾↩1+2÷˜sd-/1⊸⌽⊸>lg
+ lo←(o/𝕩)=4⊑bB⋄l∾↩/𝕩=5⊑bB⋄ll∾↩1+lo/1(↓--⊸↓)(o∾1)/+`s∾0
dr←/s>o+`⊸⊏0∾lo
or←⍋g⊏˜∾⟨cn,cn,id,id,1+/a,dr,l,l,oa+1⌈1-˜oa⊏os,fa+dy⟩
bc←or⊏∾⟨0¨cn,u⊐ob,1+(id-1)⊏a,vi-˜id⊏𝕩,(11-⊑bG)+a/𝕩
diff --git a/test/bcases.bqn b/test/bcases.bqn
index 9657c1b2..cf4d7ab3 100644
--- a/test/bcases.bqn
+++ b/test/bcases.bqn
@@ -22,3 +22,4 @@
3 % ≠0‿1‿2
2 % 0⊑2‿+‿-‿1
30 % ×´(2‿(1+3)‿(×4))+1
+1 % f←2⊑(ט)‿⍟‿(×-+)⋄2 F 3