Files
zern/examples/puzzles/aoc2025_01.zr
2026-06-06 22:29:25 +02:00

58 lines
1.3 KiB
Plaintext

func part1[lines: Array] : void
password := 0
dial := 50
for i in 0..lines->size
line : str = lines->nth(i)
dir := line[0]
n := line->substr(1, line->len() - 1)->parse_i64()
if dir == 'L'
dial -= n
while dial < 0
dial += 100
else
dial += n
while dial >= 100
dial -= 100
if dial == 0
password += 1
io.println_i64(password)
func part2[lines: Array] : void
password := 0
dial := 50
for i in 0..lines->size
line : str = lines->nth(i)
dir := line[0]
n := line->substr(1, line->len() - 1)->parse_i64()
if dir == 'L'
for i in 0..n
dial -= 1
if dial == 0
password += 1
if dial == -1
dial = 99
else
for i in 0..n
dial += 1
if dial == 100
dial = 0
password += 1
io.println_i64(password)
func main[] : i64
~input, ok := io.read_text_file("input.txt")
if !ok
panic("failed to open input.txt")
lines := input->split("\n")
part1(lines)
part2(lines)