tourney = [
[
[ ["Armando", "P"], ["Dave", "S"] ],
[ ["Richard", "R"], ["Michael", "S"] ]
],
[
[ ["Allen", "S"], ["Omer", "P"] ],
[ ["David E.", "R"], ["Richard X.", "P"] ]
],
]
這是一個比賽,需要由下面的代碼來解決:紅寶石:訪問陣列的在陣列
def self.winner(player1, player2)
p1c = player1.last.downcase
p2c = player2.last.downcase
unless RPS.include?(p1c) && RPS.include?(p2c)
raise NoSuchStrategyError, "Strategy must be one of R,P,S"
end
if p1c!=p2c
case p1c
when "r"
p2c=="s" ? player1 : player2
when "p"
p2c=="r" ? player1 : player2
when "s"
p2c=="p" ? player1 : player2
end
else
player1
end
end
現在基本情況是,當然,
def self.tournament_winner(tournament)
if tournament.size == 2
self.winner(tournament[0], tournament[1])
else
#WORK HERE
end
end
但在其他我怎麼能得到第一個數組集合是包含「阿曼多」和「戴夫」檢查誰贏了然後繼續的數組,它需要在任意大小的數組上使用。 是否有辦法通過這些元素並篩選出勝利;即, 遞歸的第一個實例,它應該返回:
tourney = [
[
["Dave", "S"],
[ ["Richard", "R"], ["Michael", "S"] ]
],
[
[ ["Allen", "S"], ["Omer", "P"] ],
[ ["David E.", "R"], ["Richard X.", "P"] ]
],
]
我很抱歉,如果我的措辭的壞。我一直在試圖解決這個問題,而且遲到了,我缺乏感覺。
貌似EDX或Coursera鍛鍊。我的暗示是在一定程度上將它弄平。 – vgoff
EdX它是,我一直堅持這一段時間,我採取了一個基於遞歸和語言允許.first .rest這個幫助了很多,但我不知道如何做到這一點。它是一個使用遞歸的規範 – MikaAK