aboutsummaryrefslogtreecommitdiff
path: root/rb/day20.rb
diff options
context:
space:
mode:
Diffstat (limited to 'rb/day20.rb')
-rwxr-xr-xrb/day20.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/rb/day20.rb b/rb/day20.rb
new file mode 100755
index 0000000..d71f7db
--- /dev/null
+++ b/rb/day20.rb
@@ -0,0 +1,25 @@
+#!/usr/bin/env ruby
+
+require "prime"
+
+def factors(m)
+ return [1] if 1 == m
+ primes, powers = Prime.prime_division(m).transpose
+ ranges = powers.map { |n| (0..n).to_a }
+ ranges[0]
+ .product( *ranges[1..-1] )
+ .map { |es| primes
+ .zip(es)
+ .map { |p, e| p ** e }
+ .reduce(:*)
+ }.sort
+end
+
+target = File.read("day20.input").strip.to_i
+
+i = 1
+loop do
+ break if factors(i).sum * 10 >= target
+ i += 1
+end
+puts i