2023-07-01 11:58:00 -04:00
|
|
|
|
V HW = ‘
|
|
|
|
|
|
/++++!/===========?\>++.>+.+++++++..+++\
|
|
|
|
|
|
\+++\ | /+>+++++++>/ /++++++++++<<.++>./
|
|
|
|
|
|
$+++/ | \+++++++++>\ \+++++.>.+++.-----\
|
|
|
|
|
|
\==-<<<<+>+++/ /=.>.+>.--------.-/’
|
|
|
|
|
|
|
|
|
|
|
|
F snusp(store, code)
|
|
|
|
|
|
V ds = [Byte(0)] * store
|
|
|
|
|
|
V dp = 0
|
|
|
|
|
|
V cs = code.split("\n")
|
|
|
|
|
|
V ipr = 0
|
|
|
|
|
|
V ipc = 0
|
|
|
|
|
|
|
|
|
|
|
|
L(row) cs
|
|
|
|
|
|
ipc = row.findi(‘$’)
|
|
|
|
|
|
I ipc != -1
|
|
|
|
|
|
ipr = L.index
|
|
|
|
|
|
L.break
|
|
|
|
|
|
|
|
|
|
|
|
V id = 0
|
|
|
|
|
|
|
|
|
|
|
|
F step()
|
|
|
|
|
|
I @id [&] 1
|
|
|
|
|
|
@ipr += 1 - (@id [&] 2)
|
|
|
|
|
|
E
|
|
|
|
|
|
@ipc += 1 - (@id [&] 2)
|
|
|
|
|
|
|
|
|
|
|
|
L ipr >= 0 & ipr < cs.len & ipc >= 0 & ipc < cs[ipr].len
|
|
|
|
|
|
S cs[ipr][ipc]
|
|
|
|
|
|
‘>’
|
|
|
|
|
|
dp++
|
|
|
|
|
|
‘<’
|
|
|
|
|
|
dp--
|
|
|
|
|
|
‘+’
|
|
|
|
|
|
ds[dp]++
|
|
|
|
|
|
‘-’
|
|
|
|
|
|
ds[dp]--
|
|
|
|
|
|
‘.’
|
|
|
|
|
|
:stdout.write(Char(code' ds[dp]))
|
|
|
|
|
|
‘,’
|
|
|
|
|
|
ds[dp] = Byte(:stdin.read(1).code)
|
|
|
|
|
|
‘/’
|
2024-03-06 22:25:12 -08:00
|
|
|
|
id = ~id
|
2023-07-01 11:58:00 -04:00
|
|
|
|
‘\’
|
|
|
|
|
|
id (+)= 1
|
|
|
|
|
|
‘!’
|
|
|
|
|
|
step()
|
|
|
|
|
|
‘?’
|
|
|
|
|
|
I !(ds[dp])
|
|
|
|
|
|
step()
|
|
|
|
|
|
step()
|
|
|
|
|
|
|
|
|
|
|
|
snusp(5, HW)
|