ラングトンのアリの描画
Posted feedbacks - PHP
ブラウザ向けに結果を出力します。 パラメータはフィールドの「幅」と「高さ」で、以下のように使用します。 (アリはフィールドの中心に落ちます) lang_ant(300, 300);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php
function lang_ant($w, $h)
{
$world = array_fill(0, $h, array_fill(0, $w, 1));
$x = (int)($w/2);
$y = (int)($h/2);
$dct = 0; /* 0:N 1:E 2:S 3:W */
$stp_ant = array('$x++;', '$y++;', '$x--;', '$y--;');
$chg_dct = array('$dct = (((++$dct)%4)+2)%4;', '$dct = (++$dct)%4;');
$print_world = array('0', ' ');
for ( $i = 0; $i < 20000; $i++) {
eval($chg_dct[$world[$y][$x]]);
eval($stp_ant[$dct]);
if ($x<0 || $w<=$x || $y<0 || $h<=$y) {
break;
}
$world[$y][$x] = (++$world[$y][$x])%2;
}
foreach ( $world as $cels) {
foreach ($cels as $cel) {
echo $print_world[$cel];
}
echo "<br />";
}
}
?>
|


Songmu #9331() [ JavaScript ] Rating8/10=0.80
- 黒いマスにアリがいた場合、90°右に方向転換し、そのマスの色を反転させ、1マス前進する。
- 白いマスにアリがいた場合、90°左に方向転換し、そのマスの色を反転させ、1マス前進する。
詳しくはWikipedia等で調べるか、参考ページに拙作のデモがありますのでご覧下さい。
see: JavaScriptでラングトンの蟻
Rating8/10=0.80-0+
[ reply ]