じゃんけんゲームです。irb から、game.class はそれが配列だと言っています。ゲームに勝った人の名前を見つけたいと思っています (この場合は Player2)。
game = [["Player1", "P"], ["Player2", "S"]]
頭に浮かぶアプローチは、名前の値を分割して Hash を返すことです。次に、値を介してそのハッシュを検索して、プレイヤー名を取得します。
h = Hash.new(0)
game.collect do |f|
h[f] = f[1]
end
h
#=> {["Player1", "P"]=>"P", ["Player2", "S"]=>"S"}
これは近いですが、葉巻ではありません。私が欲しい
{"Player1" => "P", "Player2" => "S"}
私は注入方法で再試行しました:
game.flatten.inject({}) do |player, tactic|
player[tactic] = tactic
player
end
#=> {"Player1"=>"Player1", "P"=>"P", "Player2"=>"Player2", "S"=>"S"}
これはうまくいきませんでした:
Hash[game.map {|i| [i(0), i(1)] }]
#=> NoMethodError: undefined method `i' for main:Object
理解に役立つ何かへのポインタをいただければ幸いです。