ant/default
兰顿蚂蚁
- 类型
- 纸带是二维的图灵机
- 看的邻居
- 脚下这一格
- 规则
- 滑块选的那个
选一种语言就能看到代码
DX = (0, 1, 0, -1) DY = (-1, 0, 1, 0) def step(cells, w, h, x, y, facing): i = y * w + x if cells[i] == 1: cells[i] = 0 facing = (facing + 3) % 4 else: cells[i] = 1 facing = (facing + 1) % 4 x = (x + DX[facing]) % w y = (y + DY[facing]) % h return x, y, facing
const DX = [0, 1, 0, -1]; const DY = [-1, 0, 1, 0]; function step(cells, w, h, ant) { const i = ant.y * w + ant.x; if (cells[i] === 1) { cells[i] = 0; ant.facing = (ant.facing + 3) % 4; } else { cells[i] = 1; ant.facing = (ant.facing + 1) % 4; } ant.x = (ant.x + DX[ant.facing] + w) % w; ant.y = (ant.y + DY[ant.facing] + h) % h; }
static const int DX[4] = {0, 1, 0, -1}; static const int DY[4] = {-1, 0, 1, 0}; typedef struct { int x, y, facing; } Ant; void step(char cells[], int w, int h, Ant* ant) { int i = ant->y * w + ant->x; if (cells[i] == 1) { cells[i] = 0; ant->facing = (ant->facing + 3) % 4; } else { cells[i] = 1; ant->facing = (ant->facing + 1) % 4; } ant->x = (ant->x + DX[ant->facing] + w) % w; ant->y = (ant->y + DY[ant->facing] + h) % h; }
constexpr int DX[4] = {0, 1, 0, -1}; constexpr int DY[4] = {-1, 0, 1, 0}; struct Ant { int x; int y; int facing; }; void step(std::vector<char>& cells, int w, int h, Ant& ant) { int i = ant.y * w + ant.x; if (cells[i] == 1) { cells[i] = 0; ant.facing = (ant.facing + 3) % 4; } else { cells[i] = 1; ant.facing = (ant.facing + 1) % 4; } ant.x = (ant.x + DX[ant.facing] + w) % w; ant.y = (ant.y + DY[ant.facing] + h) % h; }
static readonly int[] DX = { 0, 1, 0, -1 }; static readonly int[] DY = { -1, 0, 1, 0 }; record struct Ant(int X, int Y, int Facing); static Ant Step(byte[] cells, int w, int h, Ant ant) { int i = ant.Y * w + ant.X; if (cells[i] == 1) { cells[i] = 0; ant.Facing = (ant.Facing + 3) % 4; } else { cells[i] = 1; ant.Facing = (ant.Facing + 1) % 4; } ant.X = (ant.X + DX[ant.Facing] + w) % w; ant.Y = (ant.Y + DY[ant.Facing] + h) % h; return ant; }
static final int[] DX = {0, 1, 0, -1}; static final int[] DY = {-1, 0, 1, 0}; static void step(byte[] cells, int w, int h, int[] ant) { int i = ant[1] * w + ant[0]; if (cells[i] == 1) { cells[i] = 0; ant[2] = (ant[2] + 3) % 4; } else { cells[i] = 1; ant[2] = (ant[2] + 1) % 4; } ant[0] = (ant[0] + DX[ant[2]] + w) % w; ant[1] = (ant[1] + DY[ant[2]] + h) % h; }