diff options
-rw-r--r-- | day17 | 20 | ||||
-rw-r--r-- | day17.k | 6 | ||||
-rw-r--r-- | day17.rb | 29 |
3 files changed, 55 insertions, 0 deletions
diff --git a/day17 b/day17 new file mode 100644 index 0000000..6b25a72 --- /dev/null +++ b/day17 @@ -0,0 +1,20 @@ +33 +14 +18 +20 +45 +35 +16 +35 +1 +13 +18 +13 +50 +44 +48 +6 +24 +41 +30 +42 diff --git a/day17.k b/day17.k new file mode 100644 index 0000000..aaecf70 --- /dev/null +++ b/day17.k @@ -0,0 +1,6 @@ +d:0$'0:"day17"; +g:150; + +s:{x@&150=+/'x}@d@&:'!(#d)#2 / brute-force: subsets with sum g +#s +#&{x=&/x}@#:'s diff --git a/day17.rb b/day17.rb new file mode 100644 index 0000000..465b485 --- /dev/null +++ b/day17.rb @@ -0,0 +1,29 @@ +d = File.readlines("day17").map { |x| x.to_i } +t = 150 + +d.sort! + +$c = 0 +$cs = Hash.new(0) + +def r(u, s, a, t) + if s == t + p u + $c += 1 + $cs[u.size] += 1 + elsif s > t + # too high + else + a.each_index { |i| + r(u + [a[i]], s+a[i], a[i+1..-1], t) + } + end +end + +p d + +r([], 0, d, t) +p $c +p $cs + +# 313265 too high |