ついかっとなった

テレビを見ていたら、傘をふるわして、傘のしただけ音が聞ける音時雨という傘が紹介されていたが、傘のに雨に弱いとかいっていて爆発しろと思った。

そんなことを思っていたら、かっとなって書き直したくなったコード。ホントは、コメントしようと思ったのですが、かなり私的な趣味な書き方だと思うので、こっそり書いておきます。元々のコードが悪いわけではないし、自分のコードこそゴミな作りだろうし。

元ネタは、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による制御がうまくいかなかったので、余力があれば調べなおします。