| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package main
- import (
- "bufio"
- "fmt"
- "log"
- "math"
- "os"
- "strconv"
- )
- func main() {
- fmt.Println("Advent of Code 2025 - Day 1 - Part 2")
- nb_occ_zero, lock_num := 0, 50
- var direction, nb_ticks, prev_lock_num, nb_cycles int
- var instruction string
- f, _ := os.Open("1/input")
- defer f.Close()
- scanner := bufio.NewScanner(f)
- for scanner.Scan() {
- instruction = scanner.Text()
- switch instruction[0] {
- case 'L':
- direction = -1
- case 'R':
- direction = 1
- default:
- panic("unrecognized instruction")
- }
- nb_ticks, _ = strconv.Atoi(instruction[1:])
- prev_lock_num = lock_num
- lock_num, nb_cycles = (lock_num+direction*nb_ticks)%100, (direction*nb_ticks)/100
- if lock_num < 0 {
- lock_num += 100
- }
-
- nb_occ_zero += int(math.Abs(float64(nb_cycles)))
- if prev_lock_num == 0 {
- continue
- }
- if lock_num == 0 {
- nb_occ_zero++
- } else if direction == -1 && lock_num > prev_lock_num {
- nb_occ_zero++
- } else if direction == 1 && lock_num < prev_lock_num {
- nb_occ_zero++
- }
- }
- if err := scanner.Err(); err != nil {
- log.Fatal(err)
- }
- fmt.Println(nb_occ_zero)
- }
|