Current section

Files

Jump to
islands_engine lib islands engine tally score.ex
Raw

lib/islands/engine/tally/score.ex

defmodule Islands.Engine.Tally.Score do
@moduledoc false
import MapSet, only: [size: 1]
alias Islands.Engine.{Board, Guesses, Island}
@spec for(Board.t() | Guesses.t()) :: {atom, non_neg_integer, non_neg_integer}
def for(board_or_guesses)
def for(%Board{islands: islands, misses: misses} = _board) do
{:board_score,
Enum.reduce(islands, 0, fn {_type, %Island{hits: hits}}, sum ->
size(hits) + sum
end), size(misses)}
end
def for(%Guesses{hits: hits, misses: misses} = _guesses) do
{:guesses_score, size(hits), size(misses)}
end
end