Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class WrongNumberOfPlayersError < StandardError ; end
- class NoSuchStrategyError < StandardError ; end
- def rps_game_winner(game)
- raise WrongNumberOfPlayersError unless game.length == 2
- valid = /[rps]/
- game1 = game[0][1].downcase
- game2 = game[1][1].downcase
- raise NoSuchStrategyError unless (game1 =~ valid) && (game2 =~ valid)
- get_winner(game1, game2) ? game[0] : game[1]
- end
- def get_winner(game1, game2)
- if (game1 == game2)
- return true
- end
- if (game1 == 'p' && game2 == 'r') || (game1 == 'r' && game2 == 's') || (game1 == 's' && game2 == 'p')
- return true
- else
- return false
- end
- end
- def rps_tournament_winner(tournament)
- players = []
- return tournament[0] if tournament.size == 1
- new_array = []
- tournament.flatten.each_slice(2) do |l1|
- new_array << l1
- end
- new_array.each_slice(2) do |l1, l2|
- current_game = []
- current_game << l1
- current_game << l2
- players << rps_game_winner(current_game)
- end
- rps_tournament_winner(players)
- end
Add Comment
Please, Sign In to add comment