View Single Post
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]