def rps_tournament_winner(tournament)
for i in 0..1 do
if tournament[i][1].is_a? Array then
rps_tournament_winner(tournament[i])
else
tournament=rps_game_winner(tournament)
return
end
end
return tournament
end
Это часть реализации rock-paper-scissors в Ruby
rps_game_winner
принимает массив из двух массивов в формате
[ ["Allen", "S"], ["Omer", "P"] ]
, где первый элемент равенимя игрока, второй элемент - это его решение, и он возвращает победителя.
rps_tournament_winner
принимает на вход вложенные массивы произвольной глубины, такие как
[
[
[ ["Armando", "P"], ["Dave", "S"] ],
[ ["Richard", "R"], ["Michael", "S"] ],
],
[
[ ["Allen", "S"], ["Omer", "P"] ],
[ ["David E.", "R"], ["Richard X.", "P"] ]
]
]
Я пытаюсь изменитьисходный ввод по мере выполнения функции выполняется, но ввод получается по мере поступления. Включение глобальных переменных - это решение, но это работа, которая должна быть оценена с помощью автогрейдера, и я подозреваю, что она просто добавит некоторые данные непосредственно в функциюи сравнить вывод, так что это не вариант.