なんか先ほどQiitaの新着記事一覧をみていると興味深い文字列
「ズンドコキヨシ」
を発見。
何やら話題っぽいので少し記事を漁ってみると以下の記事にたどり着いた:
上の記事で元ネタへのリンクがはってあった(元ネタは以下のツイート)
Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
— てくも (@kumiromilk) March 9, 2016
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた
なるほどね?
ズンドコしてキ・ヨ・シ!すればいいわけか
ということで、D言語Lispで書いてみました(D言語Lispとは、D言語でラムダ式のネストを駆使してワンライナーを書いた時に、括弧が大量に含まれ一瞬Lispに見えることから勝手にD言語Lispと言っているだけであり、Lispとは関係ありません)
zundoko.d
import std.random,
std.stdio;
void zundoko(int chain = 0) {
(zun =>
(doko =>
(kiyoshi =>
(GetRandom =>
(output =>
(write(output),
(chain == 4 && output == doko)
? writeln(kiyoshi)
: zundoko((output == zun ? chain + 1 : 0))
)
)(GetRandom(2) ? zun : doko)
)((ulong n) =>
((Mt19937 gen) =>
(gen.seed(unpredictableSeed), gen.front % n)
)(Mt19937.init)
)
)("キ・ヨ・シ!")
)("ドコ")
)("ズン");
}
void main() {
zundoko;
}
実行してみると
alphakai@MacBook-Pro ~/tmp % rdmd zundoko
ドコドコドコズンズンズンズンドコキ・ヨ・シ!
Let's ズンドコキヨシ!!