diff --git a/.idea/$CACHE_FILE$ b/.idea/$CACHE_FILE$ new file mode 100644 index 0000000..6cb8985 --- /dev/null +++ b/.idea/$CACHE_FILE$ @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..5c98b42 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,2 @@ +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/.idea/adventofcode-kata.iml b/.idea/adventofcode-kata.iml new file mode 100644 index 0000000..168af80 --- /dev/null +++ b/.idea/adventofcode-kata.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..3cdc6ae --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml new file mode 100644 index 0000000..3b7d75c --- /dev/null +++ b/.idea/dbnavigator.xml @@ -0,0 +1,454 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..5c874a7 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b2e7d07 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/lib/day1.ex b/lib/day1.ex index d9d2348..9660377 100644 --- a/lib/day1.ex +++ b/lib/day1.ex @@ -25,7 +25,7 @@ defmodule AocKata.Day1 do """ @spec resulting_frequency(Enumerable.t()) :: integer def resulting_frequency(frequency_changes) do - # TODO implement + Enum.reduce frequency_changes, 0, fn(num, sum)->String.to_integer(num)+sum end end @doc """ @@ -55,8 +55,31 @@ 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) + agent = History.start_link() + Enum.reduce_while( + frequency_changes, + 0, + fn(num, sum)-> + temp = String.to_integer(num)+sum + agent.append(temp) + {:cont, temp} + end) + end +end + +defmodule History do + use Agent + + def start_link do + Agent.start_link(fn -> [] end, name: __MODULE__) + end + + def value do + Agent.get(__MODULE__, & &1) + end - # TODO + def append(latest_acc) do + Agent.update(__MODULE__, &(&1 ++ [latest_acc])) end end