slight cleanup
This commit is contained in:
parent
9653f71512
commit
4a4041a8bd
|
@ -2,12 +2,7 @@ module Main where
|
||||||
|
|
||||||
import Data.List
|
import Data.List
|
||||||
|
|
||||||
main :: IO ()
|
-- this is a little gross
|
||||||
main = do
|
|
||||||
raw <- getLine
|
|
||||||
let input = (toSchool . collect . sort) $ map read $ words $ map (\c -> if c == ',' then ' ' else c) raw
|
|
||||||
putStrLn $ "day6a: " ++ (show $ sumSchool ((iterate transform input) !! 80))
|
|
||||||
putStrLn $ "day6b: " ++ (show $ sumSchool ((iterate transform input) !! 256))
|
|
||||||
|
|
||||||
data School = School
|
data School = School
|
||||||
{ day0 :: Integer
|
{ day0 :: Integer
|
||||||
|
@ -21,6 +16,29 @@ data School = School
|
||||||
, day8 :: Integer
|
, day8 :: Integer
|
||||||
} deriving Show
|
} deriving Show
|
||||||
|
|
||||||
|
toSchool' :: [(Integer,Integer)] -> School -> School
|
||||||
|
toSchool' [] s = s
|
||||||
|
toSchool' ((i,n):is) s
|
||||||
|
| i == 0 = toSchool' is $ s { day0 = n }
|
||||||
|
| i == 1 = toSchool' is $ s { day1 = n }
|
||||||
|
| i == 2 = toSchool' is $ s { day2 = n }
|
||||||
|
| i == 3 = toSchool' is $ s { day3 = n }
|
||||||
|
| i == 4 = toSchool' is $ s { day4 = n }
|
||||||
|
| i == 5 = toSchool' is $ s { day5 = n }
|
||||||
|
| i == 6 = toSchool' is $ s { day6 = n }
|
||||||
|
| i == 7 = toSchool' is $ s { day7 = n }
|
||||||
|
| i == 8 = toSchool' is $ s { day8 = n }
|
||||||
|
| otherwise = error "index too large"
|
||||||
|
|
||||||
|
-- sorry i couldnt be bothered learning haskell arrays
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
raw <- getLine
|
||||||
|
let input = (toSchool . collect . sort) $ map read $ words $ map (\c -> if c == ',' then ' ' else c) raw
|
||||||
|
putStrLn $ "day6a: " ++ (show $ sumSchool ((iterate transform input) !! 80))
|
||||||
|
putStrLn $ "day6b: " ++ (show $ sumSchool ((iterate transform input) !! 256))
|
||||||
|
|
||||||
sumSchool :: School -> Integer
|
sumSchool :: School -> Integer
|
||||||
sumSchool (School a b c d e f g h i) =
|
sumSchool (School a b c d e f g h i) =
|
||||||
a + b + c + d + e + f + g + h + i
|
a + b + c + d + e + f + g + h + i
|
||||||
|
@ -36,19 +54,5 @@ collect is = map f $ group is
|
||||||
then error "empty list"
|
then error "empty list"
|
||||||
else ((head js), toInteger (length js))
|
else ((head js), toInteger (length js))
|
||||||
|
|
||||||
toSchool' :: [(Integer,Integer)] -> School -> School
|
|
||||||
toSchool' [] s = s
|
|
||||||
toSchool' ((i,n):is) s
|
|
||||||
| i == 0 = toSchool' is $ s { day0 = n }
|
|
||||||
| i == 1 = toSchool' is $ s { day1 = n }
|
|
||||||
| i == 2 = toSchool' is $ s { day2 = n }
|
|
||||||
| i == 3 = toSchool' is $ s { day3 = n }
|
|
||||||
| i == 4 = toSchool' is $ s { day4 = n }
|
|
||||||
| i == 5 = toSchool' is $ s { day5 = n }
|
|
||||||
| i == 6 = toSchool' is $ s { day6 = n }
|
|
||||||
| i == 7 = toSchool' is $ s { day7 = n }
|
|
||||||
| i == 8 = toSchool' is $ s { day8 = n }
|
|
||||||
| otherwise = error "index too large"
|
|
||||||
|
|
||||||
toSchool :: [(Integer,Integer)] -> School
|
toSchool :: [(Integer,Integer)] -> School
|
||||||
toSchool is = toSchool' is (School 0 0 0 0 0 0 0 0 0)
|
toSchool is = toSchool' is (School 0 0 0 0 0 0 0 0 0)
|
||||||
|
|
Loading…
Reference in a new issue