about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--day1720
-rw-r--r--day17.k6
-rw-r--r--day17.rb29
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