5個ずつキヨシる
<?php
$z = 'ズン';
$d = 'ドコ';
$zd = [$z, $d];
while (true) {
$zundoko = array_map(function() use ($zd) {
return $zd[array_rand($zd)];
}, range(0, 4));
if ([$z, $z, $z, $z, $d] === $zundoko) {
break;
}
}
echo 'キ・ヨ・シ!';
1個ずつキヨシる
<?php
list($z, $d) = $zd = ['ズン', 'ドコ'];
$zundoko = range(0, 4);
start:
array_shift($zundoko);
$zundoko[] = $zd[array_rand($zd)];
if ([$z, $z, $z, $z, $d] === $zundoko) {
echo 'キ・ヨ・シ!';
exit(0);
}
goto start;
組み合わせてかつarray_fillとか使ってみた
<?php
list($z, $d) = $zd = ['ズン', 'ドコ'];
$f = function() use ($zd) {
return $zd[array_rand($zd)];
};
$zundoko = array_map($f, range(0, 4));
while (true) {
if (array_fill(0, 4, $z) + [4 => $d] === $zundoko) {
break;
}
$zundoko[] = $f();
array_shift($zundoko);
}
echo 'キ・ヨ・シ!';
再起+クロージャの即時呼び出し (クロージャの即時呼び出ししたかったけど即時呼び出し内で再起できなかった)
- http://qiita.com/tadsan/items/6b8cc35ff9ccb3c27678 を参考に見直したら動きました
<?php
$zd = ['ズン', 'ドコ'];
$expire = array_map(function($i) use ($zd) {
return $i !== 4 ? $zd[0] : $zd[1];
}, range(0, 4));
($f = function ($zundoko = array()) use ($expire, $zd, &$f) {
if ($expire === $zundoko) {
return;
}
$zundoko[] = $zd[array_rand($zd)];
$f(array_slice($zundoko, -5, 5));
})();
echo 'キ・ヨ・シ!';