1
我是Ruby的新手,并且正在尝试使用该语言来实施一个剪纸比赛。在Ruby中实施岩石,纸张,剪刀比赛
在下面的代码中调用的rps_game_winner方法会返回一对竞争对手中的赢家。
这是迄今为止我尝试:
def rps_tournament_winner(tournament)
qualifying_round_winners = []
for i in 0..0
tournament.each_with_index do |x, xi|
x.each_with_index do |y, yi|
winner = rps_game_winner(y)
qualifying_round_winners.push(winner)
qualifying_round_winners = qualifying_round_winners.each_slice(2).to_a
end
end
tournament = qualifying_round_winners.each_slice(2).to_a
end
return tournament
end
这是我提供输入:
puts rps_tournament_winner([
[
[ ["Armando", "P"], ["David", "S"] ],
[ ["Richard", "R"], ["Michael", "S"] ]
]
])
我得到的输出是:
David
S
Richard
R
这是我得到的卡住。我无法让这两人相互竞争,并宣布最终的胜利者。
正如您在上面的代码中看到的,for循环的终止条件需要注意。
任何帮助?
建议:使用更多的表达式映射/选择/ ...和较少的语句为/每个。 – tokland 2012-07-29 14:13:42
递归解决方案可能更容易,尤其是如果您必须处理任意深度的括号。因为这个标记为“家庭作业”,所以我暂且放弃。 – 2012-07-29 12:51:52