ついかっとなった
テレビを見ていたら、傘をふるわして、傘のしただけ音が聞ける音時雨という傘が紹介されていたが、傘のに雨に弱いとかいっていて爆発しろと思った。
そんなことを思っていたら、かっとなって書き直したくなったコード。ホントは、コメントしようと思ったのですが、かなり私的な趣味な書き方だと思うので、こっそり書いておきます。元々のコードが悪いわけではないし、自分のコードこそゴミな作りだろうし。
元ネタは、Hit and Blow(数当てゲーム) - 毛の生えたようなもの。
#! /usr/bin/ruby def make_answer list = (0..9).to_a (0..3).map{ list.delete_at( rand(list.size-1)) } end def check(user,answer) hit = user.zip(answer).inject(0){|i,(u,a)| u == a ? (i+1) : i} blow = user.inject(0){|i,u| (answer.include? u) ? (i+1) : i} - hit [hit, blow] end answer = make_answer p "== Hit and Blow ==" p "Please enter number (4-digit)" try_times =0 loop{ try_times +=1 p answer printf("try %d ::",try_times) user = $stdin.gets.chomp!.unpack("a1a1a1a1").collect{|i| i.to_i} hit , blow = check(user,answer) if hit == 4 puts "You win!" break else puts " hit:#{hit} blow:#{blow}" end }
本当は、もともとの関数と同じ動作をするかRushCheckで確認しようかと思い、テストコード書いたんだけど、guardによる制御がうまくいかなかったので、余力があれば調べなおします。