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) }