aoc2021/d3golf.hs
2021-12-03 16:54:53 +01:00

13 lines
387 B
Haskell

import Data.List
d=foldr(\x y->2*y+x)0.reverse
v=(\i->i*(4095-i)).d.m
c q=read.pure.head.q.sortBy((.length).compare.length).group.sort
m=map(c head).transpose
startsWith d=filter((==d).pure.head)
mult f[[]]=[]
mult f xs=do
let i=c f$head$transpose xs
let s=map tail$startsWith(show i)xs
i:mult f s
t x=(d $ mult last x)*(d $ mult head x)
main=interact$show.((,).t<*>v).lines