ズンドコキヨシ with 秀丸マクロ
Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた
また、浮動小数点版の秀丸でないと乱数が使えない。
今回のような用途では、擬似乱数生成器を自分で実装する必要がある。
ここでは、線形合同法を用いた。
また、実装した乱数生成器は偶数と奇数を交互に返すため、このまま利用すると『ズンドコ』を延々に繰り返してしまう。
これを避けるために、10の位を判定に利用している。
#rand = tickcount % 256;
while($zundoko != "ズンズンズンズンドコ") {
#rand = (129 * #rand + 83) % 256;
if ((#rand / 10) % 2 == 0) {
$zd = "ズン";
} else {
$zd = "ドコ";
}
insert $zd;
$zundoko = $zundoko + $zd;
$zundoko = rightstr($zundoko, 20);
}
insert "キ・ヨ・シ!";
ここでは配列代わりに出力済みのテキストを使い、より簡潔に記述している。
insert "ズン";
} else {
insert "ドコ";
}
$str = gettext(x - 20, y, x, y);
if ($str == "ズンズンズンズンドコ") {
insert "キ・ヨ・シ!";
}
複数人で誰が『キ・ヨ・シ!』を出すのかという『ズンドコゲーム』も可能だ。
成功確率も1/32のためそれなりにエキサイトするのではないか。