数当てゲーム
てけとー。
#!/bin/ruby # #=数当てゲーム # #Authors:: Leigh_hakuro #Version:: 0.1 2009-01-16 # #0から9までの文字列を格納した配列を作成 number = Array("0".."9") #randomエントロピーデバイスでseed取得(Linuxなら使えることが多い) t = Time.now srand(t.sec ^ t.usec ^ Process.pid) #Rubyのバージョンが1.8.6以上の場合shuffleが使える if RUBY_VERSION >= "1.8.6" then #配列の内容をランダムに並べかえ number.shuffle! else number.each_index{|i| j = rand(i+1) array[i], array[j] = array[j], array[i] } end #配列から先頭4つを抜き出して答えを決定 answer = number[0..3] 5.times{ puts "4桁の番号を入力してね" #入力された文字列から数字以外を削除し、先頭の4文字を格納した配列を作成 ans_size = answer.size input = gets.gsub(/\D/, "").split(//)[0..ans_size] while input.size < ans_size cow = 0 #位置も数字も同じ bull = 0 #数字が同じ #配列の共通要素数をもとめる cow = (input & answer).size #配列の位置と数字が合っている数をもとめる answer.each_index{|i| bull += 1 if input[i] == answer[i] } #bullとの重複分を引く cow -= bull #表示 puts "bull:#{bull}" puts "cow:#{cow}" puts break if input == answer } puts "answer:#{answer}"