aoc/2015/02/solve.bruijn

Problem description

:import std/Combinator .
:import std/String .
:import std/Math .
:import std/Char C

parse (split-list-by (C.eq? 'x')) → (map string→number)

main trim → lines → (map parse) → (φ cons part1 part2)
	part1 foldl \(g add [φ add surface slack (^0 ⋅ ^(~0) : (^(~0) ⋅ ^(~(~0)) : {}(^(~(~0)) ⋅ ^0)))]) (+0)
		surface foldl \(g add (mul (+2))) (+0)
		slack lmin
	part2 foldl \(g add (φ add ribbon bow)) (+0)
		ribbon sort-asc → (take (+2)) → sum → (mul (+2))
		bow product