The*_*Kid 3 ruby recursion saas multidimensional-array
如果有超过8的话,我试图拆分子阵列.我已经尝试在玩家身上调用rps_tournament_winner函数,如果它的扁平长度大于16但是我得到"堆栈太深的错误".
我是否必须参与球员变量或锦标赛?我正朝着正确的方向努力; 不完整的解决方案.
def rps_tournament_winner(tournament)
return rps_game_winner(tournament) if tournament.flatten.length == 4
players = tournament.flatten(2)
while players.length > 1
players = players.each_slice(2).map { |x| rps_game_winner(x) }
end
players[0]
end
Run Code Online (Sandbox Code Playgroud)
这是我能够提出的最短的(递归)
def rps_tournament_winner(games)
if games.flatten.length > 4
rps_game_winner([rps_tournament_winner(games[0]), rps_tournament_winner(games[1])])
else
rps_game_winner(games)
end
end
Run Code Online (Sandbox Code Playgroud)
小智 5
这也是一个优雅的解决方案,无需扁平化阵列:
def rps_tournament_winner(tournament)
if tournament[0][0].is_a?(Array)
tournament =[rps_tournament_winner(tournament[0]), rps_tournament_winner(tournament[1])]
end
rps_game_winner(tournament)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2870 次 |
| 最近记录: |