30 lines
481 B
Crystal
30 lines
481 B
Crystal
|
INPUT = File.read("day3.txt").lines.map(&.chomp)
|
||
|
|
||
|
def run(input, slopes)
|
||
|
prod = 1_i64
|
||
|
slopes.each do |slope|
|
||
|
trees = 0
|
||
|
pos = 0
|
||
|
line = 0
|
||
|
right, down = slope
|
||
|
while line < input.size
|
||
|
trees += 1 if input[line][pos] == '#'
|
||
|
pos = (pos + right) % input[line].size
|
||
|
line += down
|
||
|
end
|
||
|
prod *= trees
|
||
|
end
|
||
|
prod
|
||
|
end
|
||
|
|
||
|
def part1
|
||
|
puts run(INPUT, [{3,1}])
|
||
|
end
|
||
|
|
||
|
def part2
|
||
|
puts run(INPUT, [{1,1}, {3,1}, {5,1}, {7,1}, {1,2}])
|
||
|
end
|
||
|
|
||
|
part1
|
||
|
part2
|