RosettaCodeData/Task/Execute-SNUSP/11l/execute-snusp.11l

54 lines
1 KiB
Text
Raw Permalink Normal View History

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)