Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,62 @@
T.enum Dir
UP
RIGHT
DOWN
LEFT
-V color_WHITE = Char( )
-V color_BLACK = Char(#)
F invert_color(&grid, x, y)
Invert the color of grid at x, y coordinate.
I grid[y][x] == :color_BLACK
grid[y][x] = :color_WHITE
E
grid[y][x] = :color_BLACK
F next_direction(grid, x, y, =direction)
Compute next direction according to current position and direction.
V turn_right = grid[y][x] != :color_BLACK
V direction_index = Int(direction)
I turn_right
direction_index = (direction_index + 1) % 4
E
direction_index = (direction_index + 4 - 1) % 4
V directions = [Dir.UP, Dir.RIGHT, Dir.DOWN, Dir.LEFT]
direction = directions[direction_index]
R direction
F next_position(=x, =y, direction)
Compute next position according to direction.
I direction == UP
y--
E I direction == RIGHT
x--
E I direction == DOWN
y++
E I direction == LEFT
x++
R (x, y)
F print_grid(grid)
Display grid.
print(80 * #)
print(grid.map(row -> row.join()).join("\n"))
F ant(width, height, max_nb_steps)
Langton's ant.
V grid = [[:color_WHITE] * width] * height
V x = width I/ 2
V y = height I/ 2
V direction = Dir.UP
V i = 0
L i < max_nb_steps & x C 0 .< width & y C 0 .< height
invert_color(&grid, x, y)
direction = next_direction(grid, x, y, direction)
(x, y) = next_position(x, y, direction)
i++
print_grid(grid)
ant(width' 75, height' 52, max_nb_steps' 12000)