Add Day 8, Puzzle 2 solution

This commit is contained in:
Daniele Fucini
2025-12-09 17:11:20 +01:00
parent 05b9dd50d9
commit 7a2a388e84
2 changed files with 27 additions and 1 deletions

View File

@@ -2,6 +2,7 @@
module Day08
( day08_1,
day08_2,
)
where
@@ -45,6 +46,17 @@ buildCircuits [] circuits _ = circuits
buildCircuits _ circuits 0 = circuits
buildCircuits ((x, y, _) : xs) circuits n = buildCircuits xs (mergeCircuits x y circuits) (n - 1)
findLastPoint :: [(Point, Point, Float)] -> [[Point]] -> (Point, Point)
findLastPoint [] _ = ((0, 0, 0), (0, 0, 0))
findLastPoint ((x, y, _) : xs) circuits =
let circuits' = mergeCircuits x y circuits
in if length circuits' == 1
then (x, y)
else findLastPoint xs circuits'
getX :: Point -> Int
getX (x, _, _) = x
parseInput :: IO [Point]
parseInput = do
input <- lines <$> readFile "input/day8.txt"
@@ -61,3 +73,14 @@ day08_1 = do
putStrLn $
"Day 8, Puzzle 1 solution: "
++ show result
day08_2 :: IO ()
day08_2 = do
points <- parseInput
let distances = getSortedDistances points
points' = map (: []) points
lastPoints = findLastPoint distances points'
result = getX (fst lastPoints) * getX (snd lastPoints)
putStrLn $
"Day 8, Puzzle 2 solution: "
++ show result

View File

@@ -7,7 +7,7 @@ import Day04 (day04_1, day04_2)
import Day05 (day05_1, day05_2)
import Day06 (day06_1, day06_2)
import Day07 (day07_1)
import Day08 (day08_1)
import Day08 (day08_1, day08_2)
import System.Environment (getArgs)
main :: IO ()
@@ -48,8 +48,10 @@ main = do
"7" : _ -> do
day07_1
"8" : "1" : _ -> day08_1
"8" : "2" : _ -> day08_2
"8" : _ -> do
day08_1
day08_2
"all" : _ -> do
day01_1
day01_2
@@ -65,4 +67,5 @@ main = do
day06_2
day07_1
day08_1
day08_2
_ -> error "Not implemented"