Add Day 3, Puzzle 2 solution

- Implement generalized function for Puzzle 2
    - Use generalized function also for Puzzle 1
This commit is contained in:
Daniele Fucini
2025-12-03 21:42:31 +01:00
parent c93dbadb5a
commit 63c60509df
2 changed files with 23 additions and 9 deletions

View File

@@ -1,16 +1,19 @@
module Day03
( day03_1,
day03_2
)
where
getBankJoltage :: String -> Int
getBankJoltage bank = read [x, y]
where x = maximum $ init bank
y = maximum bank'
bank' = drop 1 $ dropWhile (/= x) bank
getBankJoltage :: String -> Int -> String -> Int
getBankJoltage value 0 _ = read value
getBankJoltage value n bank =
let l = length bank
bank' = take (l - n + 1) bank
x = maximum bank'
in getBankJoltage (value ++ [x]) (n - 1) (drop 1 (dropWhile (/= x) bank))
getTotalJoltage :: [String] -> Int
getTotalJoltage banks = sum $ map getBankJoltage banks
getTotalJoltage :: [String] -> Int -> Int
getTotalJoltage banks n = sum $ map (getBankJoltage "" n) banks
parseInput :: IO [String]
parseInput = do
@@ -19,7 +22,15 @@ parseInput = do
day03_1 :: IO ()
day03_1 = do
banks <- parseInput
let joltage = getTotalJoltage banks
let joltage = getTotalJoltage banks 2
putStrLn $
"Day 3, Puzzle 1 solution: "
++ show joltage
day03_2 :: IO ()
day03_2 = do
banks <- parseInput
let joltage = getTotalJoltage banks 12
putStrLn $
"Day 3, Puzzle 2 solution: "
++ show joltage

View File

@@ -2,7 +2,7 @@ module Main (main) where
import Day01 (day01_1, day01_2)
import Day02 (day02_1, day02_2)
import Day03 (day03_1)
import Day03 (day03_1, day03_2)
import System.Environment (getArgs)
main :: IO ()
@@ -20,12 +20,15 @@ main = do
day02_1
day02_2
"3" : "1" : _ -> day03_1
"3" : "2" : _ -> day03_2
"3" : _ -> do
day03_1
day03_2
"all" : _ -> do
day01_1
day01_2
day02_1
day02_2
day03_1
day03_2
_ -> error "Not implemented"