Langton's ant: Difference between revisions

No edit summary
Line 125:
 
=={{header|Aime}}==
<lang aime></lang>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}}==
Anonymous user