From ab62979813512cbe02fa3ff09a1085ddc7ab7b02 Mon Sep 17 00:00:00 2001 From: Aleksandr Lossenko Date: Tue, 24 Sep 2019 20:28:45 +0200 Subject: [PATCH 1/4] day1 --- lib/day1.ex | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/day1.ex b/lib/day1.ex index 1122ecc..caff03f 100644 --- a/lib/day1.ex +++ b/lib/day1.ex @@ -25,7 +25,8 @@ defmodule AocKata.Day1 do """ @spec resulting_frequency(Enumerable.t()) :: integer def resulting_frequency(frequency_changes) do - # TODO implement + frequency_changes + |> Enum.reduce(0, &(String.to_integer(&1) + &2)) end @doc """ @@ -55,8 +56,18 @@ defmodule AocKata.Day1 do """ @spec resulting_frequency_fixed(Enumerable.t()) :: integer def resulting_frequency_fixed(frequency_changes) do - frequency_changes = Stream.repeatedly(fn -> frequency_changes end) |> Stream.flat_map(& &1) + frequency_changes = + Stream.repeatedly(fn -> frequency_changes end) + |> Stream.flat_map(& &1) + |> Stream.cycle() + |> Enum.reduce_while({0, %{0 => true}}, fn change, {frequency, reached_frequencies} -> + frequency = frequency + String.to_integer(change) - # TODO + if reached_frequencies[frequency] do + {:halt, frequency} + else + {:cont, {frequency, Map.put(reached_frequencies, frequency, true)}} + end + end) end end From 306b79e616e28f50da88acfffc06e9fcac889e71 Mon Sep 17 00:00:00 2001 From: Aleksandr Lossenko Date: Tue, 24 Sep 2019 20:36:07 +0200 Subject: [PATCH 2/4] Trigger Travis From 5a8b4f99a767fad0890bcecf2d1787c7ca6b47be Mon Sep 17 00:00:00 2001 From: Aleksandr Lossenko Date: Tue, 24 Sep 2019 20:40:09 +0200 Subject: [PATCH 3/4] reformat --- lib/day1.ex | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/day1.ex b/lib/day1.ex index caff03f..8cc515d 100644 --- a/lib/day1.ex +++ b/lib/day1.ex @@ -56,18 +56,18 @@ defmodule AocKata.Day1 do """ @spec resulting_frequency_fixed(Enumerable.t()) :: integer def resulting_frequency_fixed(frequency_changes) do - frequency_changes = - Stream.repeatedly(fn -> frequency_changes end) - |> Stream.flat_map(& &1) - |> Stream.cycle() - |> Enum.reduce_while({0, %{0 => true}}, fn change, {frequency, reached_frequencies} -> - frequency = frequency + String.to_integer(change) - - if reached_frequencies[frequency] do - {:halt, frequency} - else - {:cont, {frequency, Map.put(reached_frequencies, frequency, true)}} - end - end) + frequency_changes = Stream.repeatedly(fn -> frequency_changes end) |> Stream.flat_map(& &1) + + frequency_changes + |> Stream.cycle() + |> Enum.reduce_while({0, %{0 => true}}, fn change, {frequency, reached_frequencies} -> + frequency = frequency + String.to_integer(change) + + if reached_frequencies[frequency] do + {:halt, frequency} + else + {:cont, {frequency, Map.put(reached_frequencies, frequency, true)}} + end + end) end end From eccbf4a93a3247a92cf59f5cc12b727af5bb345d Mon Sep 17 00:00:00 2001 From: Aleksandr Lossenko Date: Tue, 24 Sep 2019 20:43:36 +0200 Subject: [PATCH 4/4] remove unneeded line --- lib/day1.ex | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/day1.ex b/lib/day1.ex index 8cc515d..529a814 100644 --- a/lib/day1.ex +++ b/lib/day1.ex @@ -56,8 +56,6 @@ defmodule AocKata.Day1 do """ @spec resulting_frequency_fixed(Enumerable.t()) :: integer def resulting_frequency_fixed(frequency_changes) do - frequency_changes = Stream.repeatedly(fn -> frequency_changes end) |> Stream.flat_map(& &1) - frequency_changes |> Stream.cycle() |> Enum.reduce_while({0, %{0 => true}}, fn change, {frequency, reached_frequencies} ->