我需要實現一個搖滾,紙張,剪刀比賽模擬器,它將發揮所有回合並返回錦標賽。紅寶石 - 岩石,紙。剪刀比賽
這是我的比賽數組:
tournament = [
[
[
["Armando", "P"], ["Dave", "S"]
],
[
["Richard", "R"], ["Michael", "S"]
],
],
[
[ ["Allen", "S"], ["Omer", "P"] ],
[ ["David E.", "R"], ["Richard X.", "P"] ]
]
]
其中例如[ 「理查德」, 「R」],[ 「邁克爾」, 「S」]表示一個遊戲,理查德播放搖滾和Michael剪刀。理查德應該是贏家,並且會進入下一輪。
我想實現這個遞歸函數,但我遇到麻煩陣列權
這裏是我的方法:
def rps_tournament_winner(tournament)
qualifying_round_winners = []
round_winners = []
# last round
if tournament.length < 1
return
end
tournament.each_with_index do |round,i|
puts round.inspect
qualifying_round_winners[i] = []
round_winners = []
round.each_with_index do |game,j|
winner = rps_game_winner(game)
round_winners.push winner
end
qualifying_round_winners[i] = round_winners
end
rps_tournament_winner(qualifying_round_winners)
end
我已經發明瞭很多與陣列符合條件的獲獎者但不能找出解決方案。 希望你能幫助我。 謝謝。
編輯:
這是我應該在方法
的每一次迭代得到弗里斯特輪
tournament = [
[
[
["Dave", "S"], ["Richard", "R"]
],
[
["Allen", "S"], ["Richard X.", "P"]
]
]
]
經過第二輪後:
tournament = [
[
[
["Richard", "R"] , ["Allen", "S"]
]
]
]
得主
["Richard", "R"]
編輯:2
這裏是全碼: http://pastebin.com/gjKfiWLD
請澄清什麼樣的結果,你與你的代碼獲得,你想,而不是什麼樣的結果結束。 – PinnyM
數組未正確傳遞給遞歸方法。它會在rps_game_winner函數中引發異常,因爲遊戲變量不正確。我將添加一個編輯到我的文章與應該的結果 – brpaz
爲什麼你只需要使用數組呢?有什麼特別的原因嗎?這僅僅使用數組很麻煩。你可以使用散列,這將有助於更好地組織它(如果你必須使用盡可能少的東西,出於某種原因,像挑戰?)。然而,最好的方法是使用OOP設計一些東西。請給我們一些背景知道爲什麼你開始這樣做,你對這段代碼的想法是什麼,爲什麼只有數組等。 –