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
⋮
- code_bruteforce.py
- 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)