RosettaCodeData/Task/Execute-Brain-/ALGOL-68/execute-brain--3.alg

85 lines
1.9 KiB
Plaintext

CO BF>
>++++++++[<+++++++++>-]<.>>+>+>++>[-]+<[>[->+<<++++>]<<]>.+++++++..+++.>>+++++++.<<<[[-]<[-]>]<+++++++++++++++.>>.+++.------.--------.>>+.>++++.
CO
BEGIN
MODE DADDR = INT; # data address #
MODE DATA = INT;
DATA zero = 0;
[-255:255]DATA data; # finite data space #
FOR i FROM LWB data TO UPB data DO data[i] := zero OD;
DADDR addr := ( UPB data + LWB data ) OVER 2;
addr +:= 1;
data[ addr ] +:= 8;
WHILE data[ addr ] /= zero DO
addr -:= 1;
data[ addr ] +:= 9;
addr +:= 1;
data[ addr ] -:= 1
OD;
addr -:= 1;
print( ( REPR data[ addr ] ) );
addr +:= 2;
data[ addr ] +:= 1;
addr +:= 1;
data[ addr ] +:= 1;
addr +:= 1;
data[ addr ] +:= 2;
addr +:= 1;
WHILE data[ addr ] /= zero DO
data[ addr ] -:= 1
OD;
data[ addr ] +:= 1;
addr -:= 1;
WHILE data[ addr ] /= zero DO
addr +:= 1;
WHILE data[ addr ] /= zero DO
data[ addr ] -:= 1;
addr +:= 1;
data[ addr ] +:= 1;
addr -:= 2;
data[ addr ] +:= 4;
addr +:= 1
OD;
addr -:= 2
OD;
addr +:= 1;
print( ( REPR data[ addr ] ) );
data[ addr ] +:= 7;
print( ( REPR data[ addr ] ) );
print( ( REPR data[ addr ] ) );
data[ addr ] +:= 3;
print( ( REPR data[ addr ] ) );
addr +:= 2;
data[ addr ] +:= 7;
print( ( REPR data[ addr ] ) );
addr -:= 3;
WHILE data[ addr ] /= zero DO
WHILE data[ addr ] /= zero DO
data[ addr ] -:= 1
OD;
addr -:= 1;
WHILE data[ addr ] /= zero DO
data[ addr ] -:= 1
OD;
addr +:= 1
OD;
addr -:= 1;
data[ addr ] +:= 15;
print( ( REPR data[ addr ] ) );
addr +:= 2;
print( ( REPR data[ addr ] ) );
data[ addr ] +:= 3;
print( ( REPR data[ addr ] ) );
data[ addr ] -:= 6;
print( ( REPR data[ addr ] ) );
data[ addr ] -:= 8;
print( ( REPR data[ addr ] ) );
addr +:= 2;
data[ addr ] +:= 1;
print( ( REPR data[ addr ] ) );
addr +:= 1;
data[ addr ] +:= 4;
print( ( REPR data[ addr ] ) )
END