ズンドコキヨシ in D言語Lisp

  • 2
    Like
  • 0
    Comment
More than 1 year has passed since last update.

なんか先ほどQiitaの新着記事一覧をみていると興味深い文字列
「ズンドコキヨシ」
を発見。

何やら話題っぽいので少し記事を漁ってみると以下の記事にたどり着いた:

例のキヨシチェックを java で

上の記事で元ネタへのリンクがはってあった(元ネタは以下のツイート)

なるほどね?
ズンドコしてキ・ヨ・シ!すればいいわけか

ということで、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 ズンドコキヨシ!!