Add day9 solution.
This commit is contained in:
parent
af8170a3e6
commit
2688950560
37
day9.cr
Normal file
37
day9.cr
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
require "advent"
|
||||||
|
INPUT = input(2020, 9).lines.map(&.to_i64)
|
||||||
|
|
||||||
|
def is_sum(is, from, to, n)
|
||||||
|
if to <= from
|
||||||
|
return n == 0_i64
|
||||||
|
end
|
||||||
|
return is_sum(is, from, to-1, n) || is_sum(is, from, to-1, n-is[to-1])
|
||||||
|
end
|
||||||
|
|
||||||
|
def part1(input)
|
||||||
|
is = input
|
||||||
|
i = 25
|
||||||
|
loop do
|
||||||
|
return is[i] unless is_sum(is, i-25, i, is[i])
|
||||||
|
i += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def part2(input, i)
|
||||||
|
input.each_with_index do |e, j|
|
||||||
|
next if e == i
|
||||||
|
acc = i-e
|
||||||
|
k = j
|
||||||
|
while acc > 0
|
||||||
|
k += 1
|
||||||
|
acc -= input[k]
|
||||||
|
end
|
||||||
|
if acc == 0
|
||||||
|
min, max = input[j..k].minmax
|
||||||
|
return min+max
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
p1 = part1(INPUT.clone)
|
||||||
|
puts part2(INPUT.clone, p1)
|
Loading…
Reference in New Issue
Block a user