-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathday17.nim
More file actions
31 lines (22 loc) · 676 Bytes
/
day17.nim
File metadata and controls
31 lines (22 loc) · 676 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import strutils, sequtils, algorithm
const
instructions = readFile("./inputs/17.txt").splitLines.map(parseInt)
toFill = 150
var
containters = sorted(instructions, cmp, SortOrder.Descending)
combinations = newSeq[int]()
proc calc(remaining: int, containters: seq[int], used=0) =
if remaining == 0:
combinations.add(used)
elif remaining > 0 and len(containters) > 0:
let rest = containters[1 .. containters.high]
calc(remaining - containters[0], rest, used+1)
calc(remaining, rest, used)
calc(toFill, containters)
let m = min(combinations)
var second: int
for c in combinations:
if c == m:
inc second
echo combinations.len
echo second