38 lines
1.2 KiB
Text
38 lines
1.2 KiB
Text
( O = Output string I = Input string S = Subleq code )
|
|
|
|
[ stack 0 ] is ip ( --> s )
|
|
[ stack 0 ] is a ( --> s )
|
|
[ stack 0 ] is b ( --> s )
|
|
[ stack 0 ] is c ( --> s )
|
|
|
|
[ over $ "" = iff 0
|
|
else
|
|
[ swap behead dip swap ]
|
|
swap b share poke ] is getch ( O I S --> O I S )
|
|
|
|
[ dup a share peek
|
|
dip rot join unrot ] is putch ( O I S --> O I S )
|
|
|
|
[ $ "" unrot
|
|
0 ip replace
|
|
[ dup ip share
|
|
2dup peek a replace
|
|
2dup 1 + peek b replace
|
|
2 + peek c replace
|
|
3 ip tally
|
|
a share -1 = iff getch again
|
|
b share -1 = iff putch again
|
|
dup b share peek
|
|
over a share peek -
|
|
tuck dip [ b share poke ]
|
|
1 < until
|
|
c share dup ip replace
|
|
0 < until ]
|
|
2drop ] is subleq ( I S --> O )
|
|
|
|
$ ""
|
|
' [ 15 17 -1 17 -1 -1 16 1
|
|
-1 16 3 -1 15 15 0 0
|
|
-1 72 101 108 108 111 44 32
|
|
119 111 114 108 100 33 13 0 ]
|
|
subleq echo$
|