14 lines
395 B
Haskell
14 lines
395 B
Haskell
|
import Aoc
|
||
|
import Data.List ( group, sort )
|
||
|
|
||
|
step :: String -> String
|
||
|
step = concat . concatMap (\cs -> [show $ length cs, [head cs]]) . group
|
||
|
|
||
|
part1 :: String -> (Int, String)
|
||
|
part1 x = (length after40, after40)
|
||
|
where after40 = iterate step x !! 40
|
||
|
|
||
|
part2 :: p -> String -> Int
|
||
|
part2 _ after40 = length (iterate step after40 !! 10) -- only 10 more needed
|
||
|
|
||
|
main = aocMain' single part1 part2
|