advent/2020/day03.nim

46 lines
739 B
Nim
Raw Normal View History

2021-12-01 01:09:36 +00:00
import lib/loader
type
Map = object
rows: seq[string]
proc `[]`(m: Map, x, y: int): bool =
let row = m.rows[y]
let colNum = x mod row.len
result = (row[colNum] == '#')
let data = Map(rows: loadStrings(3))
proc partOne(dX, dY: int): int =
var count, x, y = 0
while y < data.rows.len:
if data[x, y]:
count += 1
x += dX
y += dY
result = count
proc partTwo(): int =
let slopes = @[
(1, 1),
(3, 1),
(5, 1),
(7, 1),
(1, 2),
]
var total = 1
for slope in slopes:
total *= partOne(slope[0], slope[1])
result = total
when isMainModule:
echo "One: ", partOne(3, 1)
echo "Two: ", partTwo()