何やら流行ってるっぽいので,Crystal でも書いてみたけれど,Ruby に食べさせたら普通に動いた。
Crystal ならでは,って書き方できるのかな?
zundoko.cr
zd = 0
until (zd == 30)
puts (zd = ((zd << 1) + rand(2)) & 31).even? ? "ドコ" : "ズン"
end
puts "キ・ヨ・シ!!"
# 2016/03/15追記
「"ドコ" : "ズン"
はやっぱり"ズン" : "ドコ"
になるべきなのでは?」と自分からツッコミが入ったので修正版。
zundoko2.cr
zd = 0
until (zd == 30)
puts (zd = ((zd << 1) + rand(2)) & 31).odd? ? "ズン" : "ドコ"
end
puts "キ・ヨ・シ!!"
ちなみに,Ruby だと後置の until
が使えるので1,もう少しコンパクトになって,ランダムでズンドコ出すところからキヨシ条件の判定までを1行で賄えます。
zundoko.rb
zd = 0
puts (zd = ((zd << 1) + rand(2)) & 31).odd? ? "ズン" : "ドコ" until (zd == 30)
puts "キ・ヨ・シ!!"
-
Crystal では
while
やuntil
を後置で使えません ↩