Skip to content

Instantly share code, notes, and snippets.

# example input
["+3", "+3", "+4", "-2", "-4"]
|> Enum.map(&String.to_integer/1)
|> Stream.cycle()
|> Enum.reduce_while({0, MapSet.new([0])}, fn n, {sum, seen} ->
new_sum = sum + n
if MapSet.member?(seen, new_sum) do
{:halt, new_sum}
else
POINTS = {
"A" => 1, "B" => 3, "C" => 3, "D" => 2,
"E" => 1, "F" => 4, "G" => 2, "H" => 4,
"I" => 1, "J" => 8, "K" => 5, "L" => 1,
"M" => 3, "N" => 1, "O" => 1, "P" => 3,
"Q" => 10, "R" => 1, "S" => 1, "T" => 1,
"U" => 1, "V" => 4, "W" => 4, "X" => 8,
"Y" => 4, "Z" => 10
}