Skip to content

Commit ae43111

Browse files
committed
remove hard coded magic numbers to solve sample inputs
1 parent 427d5c5 commit ae43111

File tree

5 files changed

+34
-7
lines changed

5 files changed

+34
-7
lines changed

01/sample_input_A

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
1abc2
2+
pqr3stu8vwx
3+
a1b2c3d4e5f
4+
treb7uchet

01/sample_input_B

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
two1nine
2+
eightwothree
3+
abcone2threexyz
4+
xtwone3four
5+
4nineeightseven2
6+
zoneight234
7+
7pqrstsixteen

02/sample_input

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
2+
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
3+
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
4+
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
5+
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green

03/sample_input

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
467..114..
2+
...*......
3+
..35..633.
4+
......#...
5+
617*......
6+
.....+.58.
7+
..592.....
8+
......755.
9+
...$.*....
10+
.664.598..

03/sol.exs

+8-7
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,11 @@ defmodule Day03 do
5151
do: {x, y}
5252
end
5353

54-
defp extract_part_numbers(_, {140, 0}, _, _, part_numbers), do: part_numbers
54+
defp extract_part_numbers(board, {r, 0}, _, _, part_numbers) when length(board) == r,
55+
do: part_numbers
5556

56-
defp extract_part_numbers(board, {r, 140}, current_number, is_part_number, part_numbers) do
57+
defp extract_part_numbers(board, {r, c}, current_number, is_part_number, part_numbers)
58+
when length(hd(board)) == c do
5759
if is_part_number do
5860
extract_part_numbers(board, {r + 1, 0}, 0, false, [current_number | part_numbers])
5961
else
@@ -108,7 +110,7 @@ defmodule Day03 do
108110
|> Enum.reverse()
109111

110112
right =
111-
Enum.slice(row, c + 1, 140)
113+
Enum.slice(row, c + 1, length(row) - c - 1)
112114
|> Enum.take_while(fn x -> x >= 48 and x <= 57 end)
113115

114116
center = Enum.at(row, c, 46)
@@ -126,10 +128,9 @@ defmodule Day03 do
126128
parse_ratios({r + 1, c}, board) ++
127129
parse_ratios({r - 1, c}, board)
128130

129-
if length(all_numbers) == 2 do
130-
Enum.product(all_numbers)
131-
else
132-
0
131+
cond do
132+
length(all_numbers) == 2 -> Enum.product(all_numbers)
133+
true -> 0
133134
end
134135
end
135136
end

0 commit comments

Comments
 (0)