Rakk ikke nerde meg i går, men ingenting er bedre for å komme seg til hektene etter gårsdagens julebord enn å børste støv av Haskell:
AoC 1
SPOILER ALERT! Vis spoiler
Kode
import Data.Char
main = print (solveCaptcha2 "823...")
solveCaptcha1 s = captchaSum 1 (readCaptcha s)
solveCaptcha2 s = let xs = readCaptcha s
in captchaSum (div (length xs) 2) xs
readCaptcha = map digitToInt
captchaSum shift xs = sum [x | (x,y) <- zip xs (drop shift (cycle xs)), x == y]
AoC 2
SPOILER ALERT! Vis spoiler
Kode
main = do
textBlob <- readFile "dec02.txt"
let ls = lines textBlob
print(solve2 ls)
solve = checkSum . parseSheet
solve2 = sumEvenDivs . parseSheet
parseSheet::[String]-> [[Int]]
parseSheet = map parseLine
parseLine::String->[Int]
parseLine line = [read cell | cell <- words line]
checkSum::[[Int]] -> Int
checkSum = sum . map (\xs -> (maximum xs) - (minimum xs))
sumEvenDivs::[[Int]]->Int
sumEvenDivs = sum . map evenDivs
evenDivs::[Int]->Int
evenDivs xs = head [ x `div` y | x <- xs, y <- xs, x /= y && x `mod` y == 0]