advent-of-code/2020/src/day3.nim

19 lines
464 B
Nim
Raw Normal View History

2020-12-03 09:54:58 -06:00
import streams
2020-12-03 10:13:34 -06:00
proc sled(s: Stream, velx: int, vely: int): int =
2020-12-03 10:20:02 -06:00
var xpos, ypos: int
2020-12-03 10:13:34 -06:00
for line in s.lines():
2020-12-03 11:42:18 -06:00
inc ypos
if (ypos - 1) mod vely > 0: continue
if line[xpos mod line.len()] == '#': inc result
2020-12-03 10:13:34 -06:00
xpos += velx
2020-12-03 09:57:12 -06:00
2020-12-03 11:42:18 -06:00
proc part1*(s: Stream): int = sled(s, 3, 1)
2020-12-03 09:54:58 -06:00
proc part2*(s: Stream): int =
2020-12-03 10:13:34 -06:00
result = part1(s)
for vels in [(1, 1), (5, 1), (7, 1), (1, 2)]:
2020-12-03 10:20:02 -06:00
setPosition(s, 0)
2020-12-03 10:13:34 -06:00
let (velx, vely) = vels
result *= sled(s, velx, vely)