I\'m in an introductory software development class, and my homework is to create a rock paper scissors program that takes two arguments (rock, paper), etc, and returns the arg t
pguardiario's solution above can be modified per the below to show both (1) which player won (as opposed to the choice of object that won) and (2) the result when there is a draw:
def rps(p1, p2)
@results = {
'rock/paper' => "Player 2 won!",
'rock/scissors' => "Player 1 won!",
'paper/scissors' => "Player 2 won!",
'paper/rock' => "Player 1 won!",
'scissors/paper' => "Player 1 won!",
'scissors/rock' => "Player 2 won!",
'rock/rock' => "Draw!",
'scissors/scissors' => "Draw!",
'paper/paper' => "Draw!"
}
@results["#{p1}/#{p2}"]
end
rps("rock", "rock") => "Draw!"
rps("rock", "scissors") => "Player 1 won!"
rps("rock", "paper") => "Player 2 won!"
...etc
def winner(p1, p2)
wins = {rock: :scissors, scissors: :paper, paper: :rock}
{true => p1, false => p2}[wins[p1] == p2]
end
winner(:rock, :rock) # => :rock d'oh! – tokland
Per @sarnold, leaving this as an exercise for the student :).