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