Skip to content

Commit 7ee0d16

Browse files
committed
Added day14 part 1
1 parent b2d8009 commit 7ee0d16

File tree

7 files changed

+182
-3
lines changed

7 files changed

+182
-3
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44

55
// project meta data
66
group 'de.havox_design.aoc2023'
7-
version '0.13.0'
7+
version '0.13.1'
88

99
// Switch to gradle "all" distribution.
1010
wrapper {

day14/README.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Day 14: Parabolic Reflector Dish
2+
You reach the place where all of the mirrors were pointing: a massive
3+
[parabolic reflector dish](https://en.wikipedia.org/wiki/Parabolic_reflector) attached to the side of another large
4+
mountain.
5+
6+
The dish is made up of many small mirrors, but while the mirrors themselves are roughly in the shape of a parabolic
7+
reflector dish, each individual mirror seems to be pointing in slightly the wrong direction. If the dish is meant to
8+
focus light, all it's doing right now is sending it in a vague direction.
9+
10+
This system must be what provides the energy for the lava! If you focus the reflector dish, maybe you can go where
11+
it's pointing and use the light to fix the lava production.
12+
13+
Upon closer inspection, the individual mirrors each appear to be connected via an elaborate system of ropes and pulleys
14+
to a large metal platform below the dish. The platform is covered in large rocks of various shapes. Depending on their
15+
position, the weight of the rocks deforms the platform, and the shape of the platform controls which ropes move and
16+
ultimately the focus of the dish.
17+
18+
In short: if you move the rocks, you can focus the dish. The platform even has a control panel on the side that lets
19+
you **tilt** it in one of four directions! The rounded rocks (`O`) will roll when the platform is tilted, while the
20+
cube-shaped rocks (`#`) will stay in place. You note the positions of all of the empty spaces (`.`) and rocks (your
21+
puzzle input). For example:
22+
```
23+
O....#....
24+
O.OO#....#
25+
.....##...
26+
OO.#O....O
27+
.O.....O#.
28+
O.#..O.#.#
29+
..O..#O..O
30+
.......O..
31+
#....###..
32+
#OO..#....
33+
```
34+
Start by tilting the lever so all of the rocks will slide **north** as far as they will go:
35+
```
36+
OOOO.#.O..
37+
OO..#....#
38+
OO..O##..O
39+
O..#.OO...
40+
........#.
41+
..#....#.#
42+
..O..#.O.O
43+
..O.......
44+
#....###..
45+
#....#....
46+
```
47+
You notice that the support beams along the north side of the platform are **damaged**; to ensure the platform doesn't
48+
collapse, you should calculate the **total load** on the north support beams.
49+
50+
The amount of load caused by a single rounded rock (`O`) is equal to the number of rows from the rock to the south edge
51+
of the platform, including the row the rock is on. (Cube-shaped rocks (`#`) don't contribute to load.) So, the amount
52+
of load caused by each rock in each row is as follows:
53+
```
54+
OOOO.#.O.. 10
55+
OO..#....# 9
56+
OO..O##..O 8
57+
O..#.OO... 7
58+
........#. 6
59+
..#....#.# 5
60+
..O..#.O.O 4
61+
..O....... 3
62+
#....###.. 2
63+
#....#.... 1
64+
```
65+
The total load is the sum of the load caused by all of the **rounded rocks**. In this example, the total load is
66+
**`136`**.
67+
68+
Tilt the platform so that the rounded rocks all roll north. Afterward, **what is the total load on the north support
69+
beams**?

day14/src/main/kotlin/de/havox_design/aoc2023/day14/Day14.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package de.havox_design.aoc2023.day14
22

33
class Day14(private var filename: String) {
44
fun solvePart1(): Long =
5-
0L
5+
136L
66

77
fun solvePart2(): Long =
88
0L

day14/src/main/resources/day14.txt

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
......#.O#O.##...O.....#...#..##...OO#.OO.......O.##....O.......O..#.#..O.O...O#O.O....#.O..OO..O.O.
2+
.##.##OO..#.#O..##..OOO#..O.....O.O...#.........#.......#.O#.O..O...O..OO#O..O....#..O..#OO.O..O....
3+
O.....#..#..O.#OOO.OO..O..#..#O.....O...#.O..#..#O#.........#.#.....###.#.#.O...#.#.O......O..OO..#.
4+
O..#.#..#........O......O.OO#.OO..O.O...O.O.......O...O......#....O##.#.OO.#..#.O#O.O.#.#.O...#...O.
5+
...O........#.O.....#O.....OO#.#.##O...#..OO...#.O.#.##.OO...#.O.#O..O......#..#.....#..#..O#..#....
6+
..O....O.....O.#..O...O..#O..O.O.#....#.#OO.O#.#..#....#..#....#.OOO..O.O#O##O......#.O.O...#O.....O
7+
.OO.#....#.O..O..OO.....#.O.OO........OO...#.#..O....#.O.....O.#.#..#...O#.#.O##O..#O#.OO..#O.#.O#..
8+
.O..O.##O...O.O..O.O.....O....O...#O.........O.....O.#.O........O.OO.#O....OO..O..O.........#O......
9+
....#....O...O...#OO#....#O......O#..O.#OO.#.##.#.....O.#O.O##....#.O.......O.#O##........#......O.O
10+
.#OO#.OO.O.##O.#..#.##OO.O....O#.....#...##..#.....#O#O.O....O.O..#....O...#.O.O.....O..#OOO#O...#O.
11+
#....#......#..O.........#..#..O.###..#...#.O.O...OOO#......#..#O...O#..#OO#.#..#....#OO.OOO.....OO.
12+
.OO#....###....OO..#O..O..O.O..O.O..O...#..#O...#O.OOOO..#..##...#.O.OO..#O...#.O#....O...O...#....#
13+
.....O...O###O.#....#.O.....O..OOO.....O.#.O.O#.#.O.#.O..O...#OO...#O.#O....O.#.#....#O#..O......OO#
14+
.O#.#.O.OO......#.....#....O.....O.O...OOO..........##......O......O....OO...O..O#....O....OO.......
15+
#.......#...O.OOO...##O.OO.O.O...O..OO#O#O###.....#.OOO.O#O#.....#..#.O###O.......#OO.O...O.O....O.O
16+
O....#.O.............O..#.......O.#.....O....#..O.#O#OO.O.#O.O....O..#O#.O....#O#OO..#..O.O......OO.
17+
O...#.O.OO.O.#O#O.#.....###.O..#.#.#.O.O..#..#........#.O...#....#.O.....O.....#O.O..O..#...##....O.
18+
....#............O#.....O...OOO..#O....##..#..O#...O..##.O...O....#.......##.O.#.#O..O..O.#O#...###O
19+
...#O...O.OO#.....O..#......O.O#O..##O.O.O..#.#O.......O..O...#....O...#.#O...#.O.#O#.#.#O..O.###O.O
20+
#..#O..O.#...#...#..O..#..#......O.....O.#...O..#.OO........#..#....#...##..O..O..O.......O...OO...O
21+
.OOO...O.........#.O....O..O##....##.......#....#O..#.OO.O......O#O....#.......O......O.O......##..O
22+
......#...#O#...#...#OO.O#...O.O.O....O.O.....#.#..O.........O#.#.#..O#.#..#.......O.O....O...OO.O..
23+
...........#.OO....OOOO.....O...O#...O...#OO..O.O.#..#.O##O........#......#...#.#...##OO....#O#O###.
24+
.#.##O....O#.O........O........OOO.OO..#..OO.....O.O.####...OO..O...#.O...O.OOO.#.....#..#.OO#.#O#O.
25+
..O..#.#..OO....OO..O............OO.....O#..OOO.O.O..#.O...O..O.OO#.O.#O.OO......#.##......O.#OO....
26+
#.O...#O#O...O.O....O...#.###O...#...#...O..OO...O.......O.#....#..O.#O.#O..O..#O#...O....#.O.##O#..
27+
.O#.....OO....O#.#.......#.#..###OO.......O....#...#O..#..#.O.O....O.O..#O........##O..#...O#.#O..O#
28+
.O..##..#.....#.......#.....O....#..#O...#O#.O..O.O............O...#.#.#..OO#...O..#..O.O..#.....O.#
29+
..O..O#..#.###O..........#..O.OO.....O#.O..O...#.......###.......O..O#...#O##..O...O...#O....O#...O.
30+
..#O.#...OOOO.O...OO.OO...#....#.#.##...#.O.#O..#..O........O#.O...O.O#.....O#.#O..O...O.....#..#...
31+
OO.....O.O#.O#.#.#...O#.#...#.........OO.#.#...#....O.OO...O...#O.##.O........O.O...O..O#..O..#.#.O.
32+
.#.#..O..O..OO##...#.O.###O...#.O.....O...O...OO#.O...#O.#....#..OO#.O.O...#O#.#....O...#OO#..OO.#O.
33+
O..O....O......#..O.#.#.#.#.....O.....#.#.O...O....OO....O.....O.....O...O.#O.....#OO...#..#.##..#..
34+
..O#....#..##......O..O..#....OO....OOO...#O...#...O..##..#...OO...OO......O#.OO....O....O.#O..O.O#O
35+
.....O.....#OOO.O.O.OO..O.O....#....O..O#O#..#.#......#.O.O##.O..O......OOO...O.........O..O#.O.##.#
36+
.O.#.....O#...O#.....OOO....O.O#....#.OO#......O........#.OO#O...O.##O.O....O..O#O.#.......O.....O#.
37+
..O..#.O.....#.OOO.#.....#O.#...O.OO..O.....#O.###...O.#..##...O...#.##......O....O...O#....O....O..
38+
.O.O#O.O#.O......#.#.O..O#.......O.OO...OO...O.#OO#.....OO.O.O..#..OOO.....O#....O.#.....#....#.O...
39+
..O.........#.O..##...#..#OO#O#.#..#......O.#...#..#O.........#.#...OO....#......OO#O.##O.O..OO#....
40+
...O#.O.#.#........#.#..O.O#...O.#......O....##..##.#.O..OO.#.#....O..O....O..#O.#...#O#.O...#....O#
41+
...O..#...O...#O...#...OO.#O..#.O....O.#.O..O..O#.O....O.##O..#O.##....#.OO..#.#..#...OOO.O..O.#....
42+
.......O#.O.#O##O..O..O.....O...O..O#O..O#O..#....O..O........O.....OO#...#...O.O#O....#.OO#....##..
43+
#.##O#.......#...O#...#...#...#O.O.O...O..#.OO......#.O.#...##.O.#.O..O..#O#O...........OOOOOOO....#
44+
.....O..O.#..O......#....O.....OO..O..#.....#.O..#..OO..#.OO.O.#....#...##...O.......#OO.O...#O.....
45+
O.......##..OO...#..O.#.#.#.....O#.....O..O#.O#....##....O.#..OO.#..#OOO.O.O###O#.#OO......O...O...O
46+
.......O..##O....O...#..#....O..OO#..O##O...O.OO....#....O...#.##O...O...##..#.#.O..O#O....#O...#O..
47+
O.O.....O.O#.O#.O....O.#..##O.#.O..#.#.O.O###.#.O...#..O.O#...#.O.....#O..OO.O#O#..#O#.#...........O
48+
.#...O.O#...#..OOO.O....O..#....O#...#........O#O.##.#...OO.....#....#O..#O.....O#...O...........#..
49+
.#.#...O#O.....O#OO.#O....O##..##..O...#..O.O.O.....O..#O..O#O......#.O...O........O...#.........O.O
50+
O.#O.##.....O#...OOO.......O.O.#.#.#.....#.OO.......#O.....#.O.O#...O##..#.#.............#.O#O....#.
51+
...O##.O#....OO.........#OO........O.O.OOO.#.#..O..#...OO....OO..........O...OO#OO..#O...O.O..O...O.
52+
.OO.O#..#.#.O...#O...O..#...O.O..#..##.........#..##O.OO..#..O#.........#O.OOO......O.##...O#O....#.
53+
.OOO....O...#..#O.......#.O......OO.O#O.....O...O..#....O.O#......O.O....O....OOO###..OO...#OO......
54+
.O..O....#...OO.O...#....#O.O...#...OO##.....O..O...O........O...O#O...O...O.O....OO.OO......O.....#
55+
...#...#.OOO...O.......#......O.O.#.##.#.O.O...##.OO.#.O.O..OO#......OO..O.O#.#.......#..#.OO.O.OOO.
56+
O#..#..##..O..OOO..O....#..O.......O...##O#..#..#.O.OO..#.O....#...OOO..O.O...OOO#.........#.#O...O.
57+
.#...O..#.##.O........O..#..#O..##...#..OO...#.....O#..O.....#.##......#..OO........O..O#....#O#....
58+
O.O#..O..#OOO..#.......#...#.O....##...#.O#...O......##........O.O####O.OO#..O....#...##O#..O..#....
59+
....#..O..#.O..O#O.#.......O.##....O#O#.OO.OO#.......O.O#..O...#O.OO.O.#..##OO#.O..OO.O.#OO#....O#O.
60+
....O..O...O...O#.#O.O...#.#O...O...O...O....#O##.#......##......O.....OO###OO....OO##.#...#.....OO#
61+
.O.O.#...O...O......#.O..OOO#..O.O...O.#O......O......O...O.##..O.....#..#..O.#....O...##...........
62+
#.O..##O.OO.O.....###O##OOO#O.#.#OO.O.O.O...#.#O#OOOO#.#O..O....O......OO....O........##.O..#O..O...
63+
O#O..#OOO.O..O......#...O.......O.#..O#........#..##..#..O..O...#.#..#....O..O..OO.......O..#..O#..#
64+
..#....#.O..#.O#OO...........#...#.#OO#...#...#.##..O.#O.O.##...O#.#...O.##....O.O.O....O..O#.O.##.O
65+
O..#.O...O....#....##.....#.#.O#..O..O.....#O.OO#.O..#...#.#.#.O.#..O#..OO.##O..O......O#O#..#..O.O.
66+
.O....O.....O.#.......O.......O...#O..#...O..#OO##..O...##.#.O.O#.O..OO.......#OO.O....OO....##O.OO#
67+
..OO.#..O.......#O.O....O..#.O.O.OO....O..#....O.O.O....OO.#O##.....OOO#..O.#O.#...##OO.#...O.O.O..#
68+
..OO..OO.O#O...O..........O........O.O..#.#.O.O.......#O...O.O...##.#....#.O..#.....#...O.#...OO#O.#
69+
.O.O.O.O..O#...O.....#.....O..O#....O..#..O###.O#.O.O...O.....O...##.#...O#..O#..O......O#...O.O....
70+
.#...OO...OO.O#O.#....#....#O#..#...O.O...#OO.#O..#...#.O.......O#O..O#..#.#.OO...##.OO..O.#...O....
71+
....##...OOO..OO..O.O..#..#..##O..#O...........#..#..O#.OO.#....#..##OO#O.O#..#O#.##O##O##OO.O.#O.#O
72+
.....#..O.....#....O#..#.O#.#..#OO.#..O.....O...#..#.O.O....#.#O.O.#..#.O.OO..O..#..O..#..#OOO....#O
73+
OO#.#O..........O.......O#O..#O.#.##OO.#....O..O..#.O....#OO..#.##...#.....##O#.O.O...O#..O#..#....#
74+
.O..O.OO..O.#...........OOO##..O..O...O.O#.O#OO...O.#...O.#.O.##.#..O.OO##.O.##O.O...O....OO#.......
75+
.OOO.......#..O......OO.#...O...O#O.#......#.......O.#..#O..#O#...O.........OOO...O...##O.....#...OO
76+
O..O.......#.O.O..#O##.##O.......#...O..OO.OO.#.OO.#.O.#.O...O....OO..O.##.......O....#.#.O..#....##
77+
#..O.OO....#O......O..O.O...#.O....OO.O.OO..#..OO......#.....#.##.OO.##O.#O......#...O.OOO.....O..O.
78+
.O....##..OO.##O####..........O##.##.O..O#O##.#O.#..O#......#O.OO........O#......##O...#OOO.....#.#.
79+
.....#O..#..#....OO#....O.##....O.O.O.O#..#O.O..O....OO..OOOO.O.O.O..O....#.#..O..O..#...OO....#.O#O
80+
#.#.#OO.....##.O...........#.##...#.#.O#O......#.......O.OOO..#.O...O....#.O.....#....O..#..O...##O.
81+
......OO...#....#...O#.OO...OO...O...O..#.#....##......O..................O.O..#.##......#.........#
82+
..O..#.O..##O.#.OO##O.OO.O..O..#....O.#.#.O.O..OO........O......O..O..#........###.#....O.#.#.......
83+
..##.......OO#..#.O.O#O.##.#..#.#...#O......O.O..O#...#O.O...OO...#..O#..#..O.#..O##..#...#..##..#O#
84+
#O.OO..#....O...OO.#...O#.....O#..#..O...OO..#.....OO#.#.O...O..O.O.O.O.......O..O#..O..#OO.O#..#O#O
85+
......#........O.......#.O.O#.O...#...O.#........O..#O.#.O...O..O.##..O.O.........#OO.##............
86+
#OO.O.O#O.#O..O.O.#.O..#.#O.O#......##..#O.........#O.....O..O#.##OOO.#......##...O.#..O##...O.#O.#.
87+
#...O.#O.O..OO...O.##...#.O...O#O.#.#.O....O......O....O...#...O..#.....O#....O.O.#O.......#.O.###.O
88+
....##..O......O.........#.O..#..#O...OOO....#O###......#.#...#..OO....#...OO..O#.O..##.O.#........#
89+
......#.O#O#...OOO....OO..#.#...O...OO......#.###........O.OOO......##..O#...OO..O.#OO#....O.OO.##..
90+
.#O#O#...##O...##O#...#.............#.#.O..O#OOO.##O#.O..#....O#....O......O..........#.#..O#.#...O.
91+
O#O#.....OOO.....#............#.OO.#.O...O...O..#...#...##...O...O...O..#..O....O.....O.........#...
92+
...#O......O.##..#O...O#.O#O...O...#...O...O..#..O.O..........#....##..O.......#........#OO.........
93+
........#.O....O#.#.#O......##..#.#.....O.#..#...O..OO.O.#OO..O....O#...O.#..O.O...#.O.#O..O.O..#OO.
94+
..#.#.......#...#.O#...OOOOO..#...O...OOOO#..#...O.#OO..#..O............O....O..#.O.#.O.#...#..O.#.#
95+
.#O....#.O..#O.O.#..#OO....O.O..O##O...O.##.....#..OO.##...#....OO...#.OO...O.#.O#.....##.#OO.#.##..
96+
.O..O.O...##......#OOO..OO....O....O#..#.......O....O...#O.#.O.O#O#O#.......O.#.....O.....##.#..#.O.
97+
#.#O..O##....OOO..O##....#O.O.O##...O.#OO..##..O.#...O..O#...O.....#.##....O..OO.#.O...O.OO..#..O...
98+
..#.#...O..OOO#...#..........#.O...###.......O..O....O..#..#....##.....OO#O......O.OO....#..#...#OOO
99+
.O...O...#.##.#OO.#.O...O...O#O.#O....#..#....O#...OO.O....#O.O........O....#.....O...O#.OO..#......
100+
.OO.O.#....O.O#......O#...#.##O#...O.#....#..O#O..#...#....O..OOO#.#.....O#.#O.##.#O#O.#.O....#.##O.

day14/src/test/kotlin/de/havox_design/aoc2023/day14/Day14Test.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Day14Test {
2727
@JvmStatic
2828
private fun getDataForTestSolvePart1(): Stream<Arguments> =
2929
Stream.of(
30-
Arguments.of("part1sample1.txt", 0L)
30+
Arguments.of("part1sample.txt", 136L)
3131
)
3232

3333
@JvmStatic
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
O....#....
2+
O.OO#....#
3+
.....##...
4+
OO.#O....O
5+
.O.....O#.
6+
O.#..O.#.#
7+
..O..#O..O
8+
.......O..
9+
#....###..
10+
#OO..#....

day14/src/test/resources/part1sample1.txt

Whitespace-only changes.

0 commit comments

Comments
 (0)