This commit is contained in:
Oskar Winkels 2022-12-05 02:39:30 +01:00
parent 72f4a8b38b
commit fa4413e612
Signed by: o.winkels
GPG Key ID: E7484A06E99DAEF1
3 changed files with 2342 additions and 0 deletions

25
Makefile Normal file
View File

@ -0,0 +1,25 @@
DAY = 1
DIR = day$(DAY)
INPUT = $(DIR)/input.txt
SRC = $(shell find $(DIR) -name "main.hs" -or -name "main.zig")
ifeq ($(patsubst %hs,,$(SRC)),)
RUNNER = runhaskell
else
RUNNER = zig run
endif
.PHONY: run
run: $(SRC) $(INPUT)
$(RUNNER) $(SRC) < $(INPUT)
$(DIR):
mkdir -p $(DIR)
$(INPUT): | $(DIR)
@echo on
curl -H @${HOME}/creds/aoc-cookie https://adventofcode.com/2022/day/$(DAY)/input > $@

2265
day1/input.txt Normal file

File diff suppressed because it is too large Load Diff

52
day1/main.hs Normal file
View File

@ -0,0 +1,52 @@
import System.IO
import Data.List
import Data.List.Split
toNum' :: String -> Int
toNum' "" = -1
toNum' s = read s :: Int
toNum :: [String] -> [Int]
toNum = map toNum'
groups :: [Int] -> [[Int]]
groups = splitOn [-1]
parseElves :: String -> [[Int]]
parseElves = groups . toNum . lines
elveTotals :: [[Int]] -> [Int]
elveTotals = map sum
topElf :: [[Int]] -> Int
topElf = maximum . elveTotals
sortDesc :: Ord a => [a] -> [a]
sortDesc = sortBy (flip compare)
top3Elves :: [[Int]] -> Int
top3Elves = sum . take 3 . sortDesc . elveTotals
handler :: String -> String
handler s = (show $ topElf $ parseElves s) ++ "\n" ++
(show $ top3Elves $ parseElves s) ++ "\n"
main :: IO ()
main = do
interact handler