2017 ruby day 15
This commit is contained in:
parent
3ace918ff2
commit
cdb3c720c5
38
ruby/2017/15/bin/problem
Normal file
38
ruby/2017/15/bin/problem
Normal file
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
def generate(value, factor)
|
||||
(value * factor) % 2147483647
|
||||
end
|
||||
|
||||
line_1, line_2 = STDIN.read.chomp.split("\n").to_a
|
||||
generator_a_start = line_1.gsub("Generator A starts with ", "").to_i
|
||||
generator_b_start = line_2.gsub("Generator B starts with ", "").to_i
|
||||
|
||||
a_factor = 16807
|
||||
b_factor = 48271
|
||||
|
||||
a = generator_a_start
|
||||
b = generator_b_start
|
||||
pairs = 0
|
||||
|
||||
40000000.times do
|
||||
a = generate(a, a_factor)
|
||||
b = generate(b, b_factor)
|
||||
pairs += 1 if (a & 65535 == b & 65535)
|
||||
end
|
||||
|
||||
puts "Part 1: #{pairs}"
|
||||
|
||||
a = generator_a_start
|
||||
b = generator_b_start
|
||||
pairs = 0
|
||||
|
||||
5000000.times do
|
||||
a = generate(a, a_factor)
|
||||
a = generate(a, a_factor) until (a % 4) == 0
|
||||
b = generate(b, b_factor)
|
||||
b = generate(b, b_factor) until (b % 8) == 0
|
||||
pairs += 1 if (a & 65535 == b & 65535)
|
||||
end
|
||||
|
||||
puts "Part 2: #{pairs}"
|
||||
Loading…
Reference in New Issue
Block a user