Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
41
Task/Playing-cards/Elixir/playing-cards.elixir
Normal file
41
Task/Playing-cards/Elixir/playing-cards.elixir
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
defmodule Card do
|
||||
defstruct pip: nil, suit: nil
|
||||
end
|
||||
|
||||
defmodule Playing_cards do
|
||||
@pips ~w[2 3 4 5 6 7 8 9 10 Jack Queen King Ace]a
|
||||
@suits ~w[Clubs Hearts Spades Diamonds]a
|
||||
@pip_value Enum.with_index(@pips)
|
||||
@suit_value Enum.with_index(@suits)
|
||||
|
||||
def deal( n_cards, deck ), do: Enum.split( deck, n_cards )
|
||||
|
||||
def deal( n_hands, n_cards, deck ) do
|
||||
Enum.reduce(1..n_hands, {[], deck}, fn _,{acc,d} ->
|
||||
{hand, new_d} = deal(n_cards, d)
|
||||
{[hand | acc], new_d}
|
||||
end)
|
||||
end
|
||||
|
||||
def deck, do: (for x <- @suits, y <- @pips, do: %Card{suit: x, pip: y})
|
||||
|
||||
def print( cards ), do: IO.puts (for x <- cards, do: "\t#{inspect x}")
|
||||
|
||||
def shuffle( deck ), do: Enum.shuffle( deck )
|
||||
|
||||
def sort_pips( cards ), do: Enum.sort_by( cards, &@pip_value[&1.pip] )
|
||||
|
||||
def sort_suits( cards ), do: Enum.sort_by( cards, &(@suit_value[&1.suit]) )
|
||||
|
||||
def task do
|
||||
shuffled = shuffle( deck )
|
||||
{hand, new_deck} = deal( 3, shuffled )
|
||||
{hands, _deck} = deal( 2, 3, new_deck )
|
||||
IO.write "Hand:"
|
||||
print( hand )
|
||||
IO.puts "Hands:"
|
||||
for x <- hands, do: print(x)
|
||||
end
|
||||
end
|
||||
|
||||
Playing_cards.task
|
||||
Loading…
Add table
Add a link
Reference in a new issue