我應該創建在紅寶石的方法,其將在結構化的,多維的陣列,諸如掙扎:紅寶石:遞歸
my_arr = [
[ [['Armando', 'P'], ['Dave', 'S']], [['Richard', 'R'], ['Michael', 'S']] ],
[ [['Allen', 'S'], ['Omer', 'P']], [['David E.', 'R'], ['Richard X.', 'P']] ]
]
此數組應該代表岩石的比賽,紙&剪刀,玩家的數量將永遠是2^n並且不會重複(玩家)。
我寫的代碼如下:
class WrongNumberOfPlayersError < StandardError ; end
class NoSuchStrategyError < StandardError ; end
def rps_game_winner(game)
raise WrongNumberOfPlayersError unless game.length == 2
valid = ["r","p","s"]
a1=[(game[0][1]).downcase]
a2=[(game[1][1]).downcase]
raise NoSuchStrategyError unless (valid & a1) && (valid & a2)
return (game[0]) if a1 === a2
case (a1[0])
when "r"
case (a2[0])
when "p"
return (game[1])
else
return (game[0])
end
when "p"
case (a2[0])
when "s"
return (game[1])
else
return (game[0])
end
when "s"
case (a2[0])
when "r"
return (game[1])
else
return (game[0])
end
end
end
def rps_tournament_winner(tournament)
if tournament[0][0].is_a?(Array)
rps_tournament_winner(tournament[0])
elsif tournament[1][0].is_a?(Array)
rps_tournament_winner(tournament[1])
else
rps_game_winner(tournament)
end
end
所以我的問題是,鑑於使用數組我前面提到被傳遞到rps_tournament_winner
Dave
的總是贏,而不是Richard
,我一直沒能找出我出錯的地方。
泰閱讀的文本/代碼:)
我建議你使用':本文:搖滾,: scissor'而不是字符串,它更容易閱讀代碼,並且對於解釋器來說更快。 – farnoy 2012-02-29 17:44:49
我提供的數組使用類似「R」「p」等字符串,我想我可以在內部使用符號嗎?必須將它轉換回所需結果格式的一個字符串(這就像['Richard','R']? – 2012-02-29 17:51:07
你在哪裏初始化遊戲數組? – 2012-02-29 17:53:45