Langton's ant: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 125: | Line 125: | ||
=={{header|Aime}}== |
=={{header|Aime}}== |
||
<lang aime> |
<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}}== |