Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- step←{
- ⎕IO←0
- cmd←⍵.insts[⍵.ip]
- d←{⍵.tape[⍵.dp]←(⍵.tape[⍵.dp]+⍺) ⋄ ⍵.ip←(⍵.ip+1)}
- nip←{⍵.ip←(⍵.ip+1)}
- mov_ptr←{⍺.dp←((⍴⍺.tape)-1)⌊0⌈((⍺.dp)+⍵)}
- cmd='+':1 d ⍵
- cmd='-':¯1 d ⍵
- cmd='>':{⍵ mov_ptr 1 ⋄ nip ⍵}⍵
- cmd='<':{⍵ mov_ptr ¯1 ⋄ nip ⍵}⍵
- ((cmd='[')∧(⍵.tape[⍵.dp]=0)):⍵.ip←1+⍵.ip+((⍵.ip)↓⍵.insts)⍳']'
- ((cmd='[')∧(⍵.tape[⍵.dp]≠0)):nip ⍵
- ((cmd=']')∧(⍵.tape[⍵.dp]≠0)):⍵.ip←¯1+(⍴⍵.insts)-(⌽⍵.insts)⍳'['
- ((cmd=']')∧(⍵.tape[⍵.dp]=0)):nip ⍵
- cmd='.':{⍞←⍵.tape[⍵.dp] ⋄ nip ⍵}⍵
- cmd=',':{⍵.tape[⍵.dp]←⍞}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement