Je suis censé créer une méthode en Ruby qui prendra dans un cadre structuré, tableau à plusieurs dimensions, telles que:rubis: Luttant avec récursion
my_arr = [
[ [['Armando', 'P'], ['Dave', 'S']], [['Richard', 'R'], ['Michael', 'S']] ],
[ [['Allen', 'S'], ['Omer', 'P']], [['David E.', 'R'], ['Richard X.', 'P']] ]
]
Ce tableau est censé représenter un tournoi de Rock , papier & ciseaux, le nombre de joueurs sera toujours de 2^n et aucune répétition (de joueurs) n'est faite.
Le code que j'ai écrit comme suit:
class WrongNumberOfPlayersError < StandardError ; end
class NoSuchStrategyError < StandardError ; end
def rps_game_winner(game)
raise WrongNumberOfPlayersError unless game.length == 2
valid = ["r","p","s"]
a1=[(game[0][1]).downcase]
a2=[(game[1][1]).downcase]
raise NoSuchStrategyError unless (valid & a1) && (valid & a2)
return (game[0]) if a1 === a2
case (a1[0])
when "r"
case (a2[0])
when "p"
return (game[1])
else
return (game[0])
end
when "p"
case (a2[0])
when "s"
return (game[1])
else
return (game[0])
end
when "s"
case (a2[0])
when "r"
return (game[1])
else
return (game[0])
end
end
end
def rps_tournament_winner(tournament)
if tournament[0][0].is_a?(Array)
rps_tournament_winner(tournament[0])
elsif tournament[1][0].is_a?(Array)
rps_tournament_winner(tournament[1])
else
rps_game_winner(tournament)
end
end
Donc mon problème est que compte tenu de l'utilisation du tableau je l'ai mentionné plus tôt étant passé à rps_tournament_winner
Dave
gagne toujours au lieu de Richard
et je ne l'ai pas été en mesure pour savoir où je me suis trompé.
Ty pour la lecture de la paroi du texte/code :)
Je vous recommande d'utiliser le ': papier,: rock ,: Il est plus facile de lire le code et plus vite pour l'interprète – farnoy
le tableau que je suis fourni utilise les chaînes comme "R" "p", etc Je suppose que je pourrais avoir utilisé des symboles en interne? devez-vous le reconvertir en une chaîne de caractères pour le format de résultat requis (qui est comme ['Richard', 'R']? –
Où initialisez-vous le tableau de jeu? –