ズンドコキヨシ with Groovy

  • 4
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

何やら流行っているようなのでGroovyでチャレンジ。
ズンドコキヨシまとめ

こういうコードは凄く苦手。。。
一応末尾再帰になっている(はず)のと、zundokoTimeの値をいじればその分ズンがドコまでズンズン続く回数を指定出来まズン。

def rnd = new Random()
def zun = "ズン"
def doko = "ドコ" 
def zundokoTime = 4

({ lyric, lyrics = [] ->
    if (lyrics == [zun]*zundokoTime + doko) {
       print "\キ・ヨ・シ!/"
    } else {
       print "${lyric} "     
       trampoline([zun, doko][rnd.nextInt(2)], lyrics in (1..zundokoTime).collect{[zun]*it} ? lyrics + lyric : [lyric])
    }
}).trampoline()([zun, doko][rnd.nextInt(2)])

実行結果:

ドコ ドコ ズン ズン ドコ ズン ドコ ドコ ズン ドコ ズン ドコ ズン ズン ズン ドコ ドコ ズン ズン ズン ズン ズン ズン ドコ ドコ ドコ ドコ ドコ ズン ドコ ドコ ズン ズン ドコ ズン ズン ズン ズン ズン ズン ドコ ドコ ズン ドコ ドコ ドコ ドコ ズン ズン ズン ドコ ドコ ズン ドコ ドコ ドコ ズン ズン ドコ ズン ズン ズン ズン ドコ \キ・ヨ・シ!/