Langton's ant: Difference between revisions
Content added Content deleted
m (→{{header|BQN}}: Link fix) |
(Added solution for Action!) |
||
Line 150: | Line 150: | ||
## |
## |
||
</pre> |
</pre> |
||
=={{header|Action!}}== |
|||
<lang Action!>DEFINE DIRN="0" |
|||
DEFINE DIRE="1" |
|||
DEFINE DIRS="2" |
|||
DEFINE DIRW="3" |
|||
DEFINE BLACK="1" |
|||
DEFINE WHITE="2" |
|||
DEFINE MAXX="159" |
|||
DEFINE MAXY="95" |
|||
BYTE FUNC TurnLeft(BYTE dir) |
|||
IF dir=DIRN THEN |
|||
RETURN (DIRW) |
|||
FI |
|||
RETURN (dir-1) |
|||
BYTE FUNC TurnRight(BYTE dir) |
|||
IF dir=DIRW THEN |
|||
RETURN (DIRN) |
|||
FI |
|||
RETURN (dir+1) |
|||
PROC DrawAnt(INT x,y) |
|||
BYTE c,dir |
|||
dir=DIRN |
|||
DO |
|||
c=Locate(x,y) |
|||
IF c=BLACK THEN |
|||
Color=WHITE |
|||
Plot(x,y) |
|||
dir=TurnLeft(dir) |
|||
ELSE |
|||
Color=BLACK |
|||
Plot(x,y) |
|||
dir=TurnRight(dir) |
|||
FI |
|||
IF dir=DIRN THEN |
|||
y==-1 |
|||
IF y<0 THEN EXIT FI |
|||
ELSEIF dir=DIRE THEN |
|||
x==+1 |
|||
IF X>MAXX THEN EXIT FI |
|||
ELSEIF dir=DIRS THEN |
|||
y==+1 |
|||
IF Y>MAXY THEN EXIT FI |
|||
ELSE |
|||
x==-1 |
|||
IF x<0 THEN EXIT FI |
|||
FI |
|||
OD |
|||
RETURN |
|||
PROC Main() |
|||
BYTE CH=$02FC |
|||
BYTE y |
|||
Graphics(7+16) |
|||
SetColor(0,0,2) |
|||
SetColor(1,0,12) |
|||
Color=2 |
|||
FOR y=0 TO MAXY |
|||
DO |
|||
Plot(0,y) DrawTo(MAXX,y) |
|||
OD |
|||
DrawAnt(80,48) |
|||
DO UNTIL CH#$FF OD |
|||
CH=$FF |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Langton's_ant.png Screenshot from Atari 8-bit computer] |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |