Help us understand the problem. What is going on with this article?

ズンドコキヨシ 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処理見てなければ後者は無理だったと思う。

msky026
クラウド系デベロッパー。開発はそこそこ。Ruby/Elixir/Crystal/Unity/Salesforce とともに再びスマホゲーの世界に。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away