Edited at

ズンドコキヨシ with Ruby

More than 3 years have passed since last update.

最近Ruby力が落ちてきている気がするので、力試しにやってみる。

尚、@yancya さんのコードは極力見ないようにする。

http://qiita.com/yancya/items/1167e9764719151d0c80

でも、@joker1007さんのアドバイスは見てしまったのでそれは不可抗力で。

とりあえず仕様を満たす動きをサラッと書いてみる。

#coding: utf-8

zun = "ズン"
doko = "ドコ"
ary = []

while ary << [zun,doko].sample
p ary.last
if ary.last(5) == [zun, zun, zun, zun, doko]
p "キ・ヨ・シ!"
break
end
end

で、これを最適化する。

#coding: utf-8

zun, doko = "ズン", "ドコ"

loop
.lazy
.map { p [zun,doko].sample }
.each_cons(5) { |a| p "キ・ヨ・シ!" and break if a.join == zun * 4 + doko }

2016.03.17 「ズン」が1個足りてなかったのと1個目のコードの判定がおかしかったので修正。

each_consを使えば? という@joker1007さんと、チラ見してしまった@yancyaさんのmap処理見てなければ後者は無理だったと思う。