Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
52
Task/Langtons-ant/Icon/langtons-ant.icon
Normal file
52
Task/Langtons-ant/Icon/langtons-ant.icon
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
link graphics,printf
|
||||
|
||||
procedure main(A)
|
||||
e := ( 0 < integer(\A[1])) | 100 # 100 or whole number from command line
|
||||
LangtonsAnt(e)
|
||||
end
|
||||
|
||||
record antrec(x,y,nesw)
|
||||
|
||||
procedure LangtonsAnt(e)
|
||||
size := sprintf("size=%d,%d",e,e)
|
||||
label := sprintf("Langton's Ant %dx%d [%d]",e,e,0)
|
||||
&window := open(label,"g","bg=white",size) |
|
||||
stop("Unable to open window")
|
||||
|
||||
ant := antrec(e/2,e/2,?4%4)
|
||||
board := list(e)
|
||||
every !board := list(e,"w")
|
||||
|
||||
k := 0
|
||||
repeat {
|
||||
k +:= 1
|
||||
WAttrib("fg=red")
|
||||
DrawPoint(ant.x,ant.y)
|
||||
|
||||
cell := board[ant.x,ant.y]
|
||||
if cell == "w" then { # white cell
|
||||
WAttrib("fg=black")
|
||||
ant.nesw := (ant.nesw + 1) % 4 # . turn right
|
||||
}
|
||||
else { # black cell
|
||||
WAttrib( "fg=white")
|
||||
ant.nesw := (ant.nesw + 3) % 4 # . turn left = 3 x right
|
||||
}
|
||||
board[ant.x,ant.y] := map(cell,"wb","bw") # flip colour
|
||||
DrawPoint(ant.x,ant.y)
|
||||
|
||||
case ant.nesw of { # go
|
||||
0: ant.y -:= 1 # . north
|
||||
1: ant.x +:= 1 # . east
|
||||
2: ant.y +:= 1 # . south
|
||||
3: ant.x -:= 1 # . west
|
||||
}
|
||||
|
||||
if 0 < ant.x <= e & 0 < ant.y <= e then next
|
||||
else break
|
||||
}
|
||||
printf("Langton's Ant exited the field after %d rounds.\n",k)
|
||||
label := sprintf("label=Langton's Ant %dx%d [%d]",e,e,k)
|
||||
WAttrib(label)
|
||||
WDone()
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue