RosettaCodeData/Task/Langtons-ant/ANSI-BASIC/langtons-ant.basic
2026-04-30 12:34:36 -04:00

38 lines
911 B
Text

100 REM Langton!'s ant
110 REM ** Simulation
120 DIM Board(0 TO 99, 0 TO 99)
130 LET W = UBOUND(Board, 1) + 1
140 LET H = UBOUND(Board, 2) + 1
150 REM Start in the middle, facing East
160 LET X = INT(W / 2)
170 LET Y = INT(H / 2)
180 LET Dir = 0
190 DO
200 IF Board(X, Y) <> 0 THEN
210 LET Dir = Dir - 1
220 LET Board(X, Y) = 0
230 ELSE
240 LET Dir = Dir + 1
250 LET Board(X, Y) = 1
260 END IF
270 SELECT CASE MOD(Dir, 4)
280 CASE 0
290 LET X = X + 1
300 CASE 1
310 LET Y = Y + 1
320 CASE 2
330 LET X = X - 1
340 CASE 3
350 LET Y = Y - 1
360 END SELECT
370 LOOP WHILE X >= 0 AND X < W AND Y >= 0 AND Y < H
380 REM ** Visualization
390 SET WINDOW 0, W, 0, H
400 SET AREA COLOR 0
410 SET POINT COLOR 1
420 FOR X = 0 TO W - 1
430 FOR Y = 0 TO H - 1
440 IF Board(X, Y) <> 0 THEN GRAPH POINTS: X, Y
450 NEXT Y
460 NEXT X
470 END