Compare commits
No commits in common. "dc84f2c15168d410b3c665e786b7e31168b7bcfb" and "b39d71d124270bd271d880e567f643c856f866f2" have entirely different histories.
dc84f2c151
...
b39d71d124
1000
day09/input
1000
day09/input
File diff suppressed because it is too large
Load Diff
|
@ -1,20 +0,0 @@
|
||||||
35
|
|
||||||
20
|
|
||||||
15
|
|
||||||
25
|
|
||||||
47
|
|
||||||
40
|
|
||||||
62
|
|
||||||
55
|
|
||||||
65
|
|
||||||
95
|
|
||||||
102
|
|
||||||
117
|
|
||||||
150
|
|
||||||
182
|
|
||||||
127
|
|
||||||
219
|
|
||||||
299
|
|
||||||
277
|
|
||||||
309
|
|
||||||
576
|
|
|
@ -1,18 +0,0 @@
|
||||||
#!/bin/env ruby
|
|
||||||
|
|
||||||
def valid_nums (nums)
|
|
||||||
nums.map { |num| nums
|
|
||||||
.map { |sub| sub + num if sub != num }}.flatten.uniq.compact
|
|
||||||
end
|
|
||||||
|
|
||||||
numbers = File.readlines('./input').to_ary.map(&:strip!).map(&:to_i)
|
|
||||||
preamble = 25
|
|
||||||
|
|
||||||
|
|
||||||
numbers.each.with_index do |number, i|
|
|
||||||
next if i < preamble
|
|
||||||
if !valid_nums(numbers[(i-preamble)..(i-1)]).include?(number)
|
|
||||||
puts number
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,41 +0,0 @@
|
||||||
#!/bin/env ruby
|
|
||||||
|
|
||||||
def valid_nums (nums)
|
|
||||||
nums.map { |num| nums
|
|
||||||
.map { |sub| sub + num if sub != num }}.flatten.uniq.compact
|
|
||||||
end
|
|
||||||
|
|
||||||
def find_invalid (numbers, preamble)
|
|
||||||
numbers.each.with_index do |number, i|
|
|
||||||
next if i < preamble
|
|
||||||
if !valid_nums(numbers[(i-preamble)..(i-1)]).include?(number)
|
|
||||||
return i, number
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
numbers = File.readlines('./input').to_ary.map(&:strip!).map(&:to_i)
|
|
||||||
preamble = 25
|
|
||||||
|
|
||||||
index, wrong_number = find_invalid(numbers, preamble)
|
|
||||||
|
|
||||||
pp index, wrong_number
|
|
||||||
numbers.slice!(index..)
|
|
||||||
numbers.delete_if { |number| number > wrong_number }
|
|
||||||
|
|
||||||
max = numbers.length
|
|
||||||
step = 1
|
|
||||||
solution = nil
|
|
||||||
while step < max do
|
|
||||||
range_sums = numbers.map.with_index { |num, i| {"#{i..i+step}" => numbers[i..i+step].sum}}
|
|
||||||
range_sums.each do |set|
|
|
||||||
if set.values.include?(wrong_number)
|
|
||||||
solution = set
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
step += 1
|
|
||||||
end
|
|
||||||
first, last = solution.keys[0].split('..').map(&:to_i)
|
|
||||||
pp solution
|
|
||||||
p numbers[first..last].min + numbers[first..last].max
|
|
Loading…
Reference in New Issue