Advent of code

 1er décembre 2025 

  Secret Entrance : Faire tourner une molette dans un sens ou l'autre et compter combien de fois elle passe devant le 0.
R27
   
R47
   
R21
   
L37
   
R5
   
L48
   
 
  1. code_bruteforce.py
  2. code_optim.py
START_POS = 50
MAX_ANGLE = 100

with open("input.txt", 'r', encoding='utf-8') as f:
    numbers = []
    for line in f.read().split():
        if line[0] == 'R':
            sign = 1
        elif line[0] == 'L':
            sign = -1
        else:
            print("Bad input line:", line)
            exit(1)
        numbers.append(sign * int(line[1:]))

    #numbers = [(1 if line[0]=='R' else -1)*int(line[1:]) for line in f.read().split()]


### Mathematical way  ###
from math import fmod
angle = START_POS
nb1 = 0
nb2 = 0
for i, val in enumerate(numbers):
    remainder = int(fmod(val, MAX_ANGLE))    # fmod(-20, 100) is -20.0, where -20%100 is 80.
    nb2 += abs(val - remainder) // MAX_ANGLE
    angle_new = angle + remainder
    if angle >0 and (angle_new >= MAX_ANGLE or angle_new <= 0):
        nb2 += 1
    angle = angle_new % MAX_ANGLE
    if angle == 0:
        nb1 += 1
    
print("Réponse partie 1:", nb1)
print("Réponse partie 2:", nb2)