Skip to content

Commit 0c99e78

Browse files
author
Pawel Knap
committed
chore: add solutions for AoC day seven
1 parent 9898bb1 commit 0c99e78

File tree

2 files changed

+26
-10
lines changed

2 files changed

+26
-10
lines changed

Day05.jl

+9-10
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,17 @@ data = map(
1111

1212
# Part 1
1313
allpoints =
14-
(line) -> (
15-
mincoord = min.(line[1], line[2]);
16-
maxcoord = max.(line[1], line[2]);
17-
filter(
18-
p -> (norm(line[1] .- p) + norm(line[2] .- p) norm(line[1] .- line[2])),
19-
vec(
20-
collect(
21-
Iterators.product(mincoord[1]:maxcoord[1], mincoord[2]:maxcoord[2]),
14+
(line) -> (filter(
15+
p -> (norm(line[1] .- p) + norm(line[2] .- p) norm(line[1] .- line[2])),
16+
vec(
17+
collect(
18+
Iterators.product(
19+
range(extrema(first.(line))...),
20+
range(extrema(last.(line))...),
2221
),
2322
),
24-
)
25-
);
23+
),
24+
));
2625

2726
getans = (data) -> count(>(1), values(countmap(Iterators.flatten(map(allpoints, data)))));
2827

Day07.jl

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Input data
2+
data = map(x -> parse(Int64, x), split(readline("Day07.input"), ","));
3+
4+
# Part 1
5+
mindistance =
6+
(F, data) ->
7+
reduce((acc, v) -> min(acc, v), map(x -> F(x, data), range(extrema(data)...)))
8+
9+
ans = mindistance((x, data) -> sum(map(v -> abs(v - x), data)), data);
10+
println("Part 1: $ans")
11+
12+
# Part 2
13+
ans = mindistance(
14+
(x, data) -> sum(map(v -> (n = abs(v - x); (n * (n + 1)) >> 1), data)),
15+
data,
16+
);
17+
println("Part 2: $ans")

0 commit comments

Comments
 (0)