Add Day 9, Puzzle 1 solution
This commit is contained in:
@@ -39,3 +39,4 @@ executable adventofcode2025
|
||||
Day06
|
||||
Day07
|
||||
Day08
|
||||
Day09
|
||||
|
||||
33
src/Day09.hs
Normal file
33
src/Day09.hs
Normal file
@@ -0,0 +1,33 @@
|
||||
{-# OPTIONS_GHC -Wno-incomplete-patterns #-}
|
||||
|
||||
module Day09
|
||||
( day09_1,
|
||||
)
|
||||
where
|
||||
|
||||
import Data.List.Split (splitOn)
|
||||
|
||||
type Point = (Int, Int)
|
||||
|
||||
readPoint :: [String] -> Point
|
||||
readPoint (x : y : _) = (read x, read y)
|
||||
|
||||
area :: Point -> Point -> Int
|
||||
area (x1, y1) (x2, y2) = abs (x2 - x1 + 1) * abs (y2 - y1 + 1)
|
||||
|
||||
getMaxArea :: [Point] -> Int
|
||||
getMaxArea vertices = maximum $ [area x y | x <- vertices, y <- vertices, x /= y]
|
||||
|
||||
parseInput :: IO [Point]
|
||||
parseInput = do
|
||||
input <- lines <$> readFile "input/day9.txt"
|
||||
let points = map (readPoint . splitOn ",") input
|
||||
return points
|
||||
|
||||
day09_1 :: IO ()
|
||||
day09_1 = do
|
||||
vertices <- parseInput
|
||||
let result = getMaxArea vertices
|
||||
putStrLn $
|
||||
"Day 9, Puzzle 1 solution: "
|
||||
++ show result
|
||||
@@ -8,6 +8,7 @@ import Day05 (day05_1, day05_2)
|
||||
import Day06 (day06_1, day06_2)
|
||||
import Day07 (day07_1)
|
||||
import Day08 (day08_1, day08_2)
|
||||
import Day09 (day09_1)
|
||||
import System.Environment (getArgs)
|
||||
|
||||
main :: IO ()
|
||||
@@ -52,6 +53,9 @@ main = do
|
||||
"8" : _ -> do
|
||||
day08_1
|
||||
day08_2
|
||||
"9" : "1" : _ -> day09_1
|
||||
"9" : _ -> do
|
||||
day09_1
|
||||
"all" : _ -> do
|
||||
day01_1
|
||||
day01_2
|
||||
@@ -68,4 +72,5 @@ main = do
|
||||
day07_1
|
||||
day08_1
|
||||
day08_2
|
||||
day09_1
|
||||
_ -> error "Not implemented"
|
||||
|
||||
Reference in New Issue
Block a user