Skip to content

Commit 4b83e7a

Browse files
author
Gregory Igelmund
committed
Day1: Add solution for part2 of day1
1 parent 07757ed commit 4b83e7a

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

elixir/lib/mix/tasks/day1.ex

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,21 +98,38 @@ defmodule Mix.Tasks.Day1 do
9898
9999
## Examples
100100
101-
iex> Mix.Tasks.Day1.detect_duplicate_frequency([+1, -1])
101+
iex> Mix.Tasks.Day1.detect_repeated_frequency([+1 -1])
102102
0
103103
104-
iex> Mix.Tasks.Day1.detect_duplicate_frequency([+3, +3, +4, -2, -4])
104+
iex> Mix.Tasks.Day1.detect_repeated_frequency([+3, +3, +4, -2, -4])
105105
10
106106
107-
iex> Mix.Tasks.Day1.detect_duplicate_frequency([-6, +3, +8, +5, -6])
107+
iex> Mix.Tasks.Day1.detect_repeated_frequency([-6, +3, +8, +5, -6])
108108
5
109109
110-
iex> Mix.Tasks.Day1.detect_duplicate_frequency([+7, +7, -2, -7, -4])
110+
iex> Mix.Tasks.Day1.detect_repeated_frequency([+7, +7, -2, -7, -4])
111111
14
112-
113112
"""
114113

115-
def detect_duplicate_frequency(list) do
116-
0
114+
def detect_repeated_frequency(list) do
115+
detect_repeated_frequency(list, 0, [])
116+
end
117+
118+
def detect_repeated_frequency(list, index, frequencies) do
119+
nindex = if index >= length(list) do
120+
0
121+
else
122+
index
123+
end
124+
125+
current_frequency = List.last(frequencies) || 0
126+
frequency_change = Enum.at(list, nindex)
127+
next_frequency = current_frequency + frequency_change
128+
129+
if Enum.member?(frequencies, next_frequency) do
130+
next_frequency
131+
else
132+
detect_repeated_frequency(list, nindex+1, frequencies ++ [next_frequency])
133+
end
117134
end
118135
end

0 commit comments

Comments
 (0)