Advent of Code solutions
at main 23 lines 659 B view raw
1import "trilogy:debug" use dbg 2import "trilogy:io" use readlines 3import "trilogy:parsec" use parse, apply, word, sep_by_1, string, char 4import "trilogy:array" use fold, map 5import "trilogy:iterator" as it 6import "trilogy:record" as rec 7 8proc connection!() { 9 let source = apply word 10 apply <| string ": " 11 let outputs = apply (sep_by_1 (char ' ') word) 12 return source:outputs 13} 14 15func paths_from _ {||} = 0 16func paths_from "out" _ = 1 17func paths_from from {| ^from => to, ..rest |} = 18 fold (+) 0 <| map (fn to2. paths_from to2 rest) to 19 20proc main!() { 21 let graph = rec::collect <| it::map (parse connection) <| readlines 22 dbg!(paths_from "you" graph) 23}