diff options
author | Nat Lasseter <user@4574.co.uk> | 2024-11-07 22:27:13 +0000 |
---|---|---|
committer | Nat Lasseter <user@4574.co.uk> | 2024-11-07 22:27:13 +0000 |
commit | 7d86157dfe52a76e03694be4592e32d9dec69ed9 (patch) | |
tree | 2e322463a0c5a15c09a78954334753d374316e31 /rb/day20.rb | |
parent | d7d62da5e9c2ca991885641e0a55c2907eb0fb7e (diff) |
Diffstat (limited to 'rb/day20.rb')
-rwxr-xr-x | rb/day20.rb | 25 |
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 |