Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
57
Task/Penneys-game/Elixir/penneys-game.elixir
Normal file
57
Task/Penneys-game/Elixir/penneys-game.elixir
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
defmodule Penney do
|
||||
@toss [:Heads, :Tails]
|
||||
|
||||
def game(score \\ {0,0})
|
||||
def game({iwin, ywin}=score) do
|
||||
IO.puts "Penney game score I : #{iwin}, You : #{ywin}"
|
||||
[i, you] = @toss
|
||||
coin = Enum.random(@toss)
|
||||
IO.puts "#{i} I start, #{you} you start ..... #{coin}"
|
||||
{myC, yC} = setup(coin)
|
||||
seq = for _ <- 1..3, do: Enum.random(@toss)
|
||||
IO.write Enum.join(seq, " ")
|
||||
{winner, score} = loop(seq, myC, yC, score)
|
||||
IO.puts "\n #{winner} win!\n"
|
||||
game(score)
|
||||
end
|
||||
|
||||
defp setup(:Heads) do
|
||||
myC = Enum.shuffle(@toss) ++ [Enum.random(@toss)]
|
||||
joined = Enum.join(myC, " ")
|
||||
IO.puts "I chose : #{joined}"
|
||||
{myC, yourChoice}
|
||||
end
|
||||
defp setup(:Tails) do
|
||||
yC = yourChoice
|
||||
myC = (@toss -- [Enum.at(yC,1)]) ++ Enum.take(yC,2)
|
||||
joined = Enum.join(myC, " ")
|
||||
IO.puts "I chose : #{joined}"
|
||||
{myC, yC}
|
||||
end
|
||||
|
||||
defp yourChoice do
|
||||
IO.write "Enter your choice (H/T) "
|
||||
choice = read([])
|
||||
IO.puts "You chose: #{Enum.join(choice, " ")}"
|
||||
choice
|
||||
end
|
||||
|
||||
defp read([_,_,_]=choice), do: choice
|
||||
defp read(choice) do
|
||||
case IO.getn("") |> String.upcase do
|
||||
"H" -> read(choice ++ [:Heads])
|
||||
"T" -> read(choice ++ [:Tails])
|
||||
_ -> read(choice)
|
||||
end
|
||||
end
|
||||
|
||||
defp loop(myC, myC, _, {iwin, ywin}), do: {"I", {iwin+1, ywin}}
|
||||
defp loop(yC, _, yC, {iwin, ywin}), do: {"You", {iwin, ywin+1}}
|
||||
defp loop(seq, myC, yC, score) do
|
||||
append = Enum.random(@toss)
|
||||
IO.write " #{append}"
|
||||
loop(tl(seq)++[append], myC, yC, score)
|
||||
end
|
||||
end
|
||||
|
||||
Penney.game
|
||||
Loading…
Add table
Add a link
Reference in a new issue