Langton's ant: Difference between revisions

Content added Content deleted
No edit summary
Line 125: Line 125:


=={{header|Aime}}==
=={{header|Aime}}==
<lang aime></lang>
<lang aime>integer
is_white(list map, integer x, integer y)
{
integer p, w;
data b;

b = l_q_data(map, y);
w = b_character(b, x >> 3);
p = 1 << (7 - (x & 7));
b_replace(b, x >> 3, w ^ p);

return !(w & p);
}

void
ant(integer x, integer y, integer d, list map)
{
while (-1 < x && x < 100 && -1 < y && y < 100) {
if (is_white(map, x, y)) {
d += 3;
d &= 3;
} else {
d += 1;
d &= 3;
}

if (d & 1) {
y += (d & 2) - 1;
} else {
x += 1 - (d & 2);
}
}
}

integer
main(void)
{
integer i;
file f;
list l;

i = 100;
while (i) {
data b;
integer j;

i -= 1;
j = 13;
while (j) {
j -= 1;
b_append(b, 0);
}

l_l_data(l, -1, b);
}

ant(50, 50, 2, l);

f_open(f, "ant.pbm", OPEN_CREATE | OPEN_TRUNCATE | OPEN_WRITEONLY, 00644);

f_text(f, "P4\n100 100\n");
i = 100;
while (i) {
f_b_post(f, l_q_data(l, -i));
i -= 1;
}

return 0;
}</lang>


=={{header|AutoHotkey}}==
=={{header|AutoHotkey}}==