af6361e512fc34b8086d0aef4bcf27248f078109
[advent18.git] / 2 / s1.icl
1 module s1
2
3 import StdEnv
4
5 import Data.Func
6 import Data.List
7 import Data.Tuple
8
9 getinput f
10 # (ok, c, f) = freadc f
11 | not ok = []
12 = [c:getinput f]
13
14 split :: [Char] [Char] -> [[Char]]
15 split [] [] = []
16 split c [] = [reverse c]
17 split c ['\n':rest] = [reverse c:split [] rest]
18 split c [r:rest] = split [r:c] rest
19
20 Start w
21 # (io, w) = stdio w
22 # l = map (nub o map length o group o sort)
23 $ split []
24 $ getinput io
25 = ns 2 l * ns 3 l
26
27 ns n l = sum [1\\x<-l|isMember n x]