29 lines
413 B
Crystal
29 lines
413 B
Crystal
|
require "advent"
|
||
|
INPUT = input(2020, 25).lines.map(&.to_i64)
|
||
|
|
||
|
def transform(s)
|
||
|
i = 1_i64
|
||
|
c = 0
|
||
|
loop do
|
||
|
c += 1
|
||
|
i = (i * s) % 20201227
|
||
|
yield i, c
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def find_size(s, goal)
|
||
|
transform(s) do |n, c|
|
||
|
return c if n == goal
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def part1(input)
|
||
|
goal = find_size(7, input[0])
|
||
|
puts goal
|
||
|
transform(input[1]) do |n, c|
|
||
|
return n if c == goal
|
||
|
end
|
||
|
end
|
||
|
|
||
|
puts part1(INPUT.clone)
|