Intcode.ua
1 Parse ← map⇡⊸⧻ ⊜⋕∊⊂@-+@0⇡10. 2 3 # Op <inst> 4 Op ↚ ⍤.≥0.◿100 5 6 # Mode <arg> <inst> 7 Mode ↚ ◿10⌊÷ⁿ⊙10+2 8 9 # Read <arg> <ip> <base> <mem> 10 Read ↚ ⬚0⨬(get⊙◌|∘|get+) ⊃(Mode⊙(get|◌)|get++1⊙⊙◌|⋅⋅⊙∘) 11 12 # Write <val> <arg> <ip> <base> <mem> 13 Write ↚ insert:⊙(⨬(⊙◌|⍤.0|+) ⊃(Mode⊙(get|◌)|get++1⊙⊙◌|⋅⋅⊙∘)) 14 15 # ...Op <ip> <base> <mem> 16 BinOp! ↚ +4⊃⋅⋅⊙∘Write⊙2◡(^0⊃(Read1|Read0)) 17 OpAdd ↚ BinOp!+ 18 OpMul ↚ BinOp!× 19 20 Input! ↚ +2⊃⋅⋅⊙∘Write⊃(⋅⋅⋅∘|0|⊙⊙∘) ⊙⊙⊙^0 21 Output! ↚ +2 ⊙⊙⊙^0 ⊃(⋅⊙⊙∘|⊙⋅⋅◌) ◡(Read0) 22 23 Jmp! ↚ ⨬(+3◌|⊙◌)^0◡⊃(Read0|Read1) 24 JmpTrue ↚ Jmp!(≠0) 25 JmpFalse ↚ Jmp!(=0) 26 27 Lt ↚ BinOp!< 28 Eq ↚ BinOp!(=) 29 30 Base ↚ +2⊙+:◡(Read0) 31 32 Step‼ ↚ ⨬(⊙⊙⊙∘|OpAdd|OpMul|Input!^0|Output!^1|JmpTrue|JmpFalse|Lt|Eq|Base)Op◡(get⊙◌) 33 IsDone ↚ ≍99get⊙◌ 34 35 Run‼ ← ◌◌⍢(Step‼^0^1|¬IsDone)0 0