Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
48
Task/Rock-paper-scissors/Elixir/rock-paper-scissors.elixir
Normal file
48
Task/Rock-paper-scissors/Elixir/rock-paper-scissors.elixir
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
defmodule Rock_paper_scissors do
|
||||
def play, do: loop([1,1,1])
|
||||
|
||||
defp loop([r,p,s]=odds) do
|
||||
IO.gets("What is your move? (R,P,S,Q) ") |> String.upcase |> String.first
|
||||
|> case do
|
||||
"Q" -> IO.puts "Good bye!"
|
||||
human when human in ["R","P","S"] ->
|
||||
IO.puts "Your move is #{play_to_string(human)}."
|
||||
computer = select_play(odds)
|
||||
IO.puts "My move is #{play_to_string(computer)}"
|
||||
case beats(human,computer) do
|
||||
true -> IO.puts "You win!"
|
||||
false -> IO.puts "I win!"
|
||||
_ -> IO.puts "Draw"
|
||||
end
|
||||
case human do
|
||||
"R" -> loop([r+1,p,s])
|
||||
"P" -> loop([r,p+1,s])
|
||||
"S" -> loop([r,p,s+1])
|
||||
end
|
||||
_ ->
|
||||
IO.puts "Invalid play"
|
||||
loop(odds)
|
||||
end
|
||||
end
|
||||
|
||||
defp beats("R","S"), do: true
|
||||
defp beats("P","R"), do: true
|
||||
defp beats("S","P"), do: true
|
||||
defp beats(x,x), do: :draw
|
||||
defp beats(_,_), do: false
|
||||
|
||||
defp play_to_string("R"), do: "Rock"
|
||||
defp play_to_string("P"), do: "Paper"
|
||||
defp play_to_string("S"), do: "Scissors"
|
||||
|
||||
defp select_play([r,p,s]) do
|
||||
n = :rand.uniform(r+p+s)
|
||||
cond do
|
||||
n <= r -> "P"
|
||||
n <= r+p -> "S"
|
||||
true -> "R"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Rock_paper_scissors.play
|
||||
Loading…
Add table
Add a link
Reference in a new issue