56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
|
#!/usr/bin/python3
|
||
|
"""
|
||
|
Jour 06 du défi Advent Of Code pour l'année 2023
|
||
|
"""
|
||
|
|
||
|
def read_sample():
|
||
|
"""récupère les entrées depuis le fichier texte correspondant"""
|
||
|
with open('inputs/day06.txt', 'r') as f:
|
||
|
sample = f.read().split('\n')
|
||
|
sample = [ i for i in sample if i != '' ]
|
||
|
return sample
|
||
|
|
||
|
def parse_2(sample):
|
||
|
sample = [i.replace(" ", "") for i in sample]
|
||
|
return parse_sample(sample)
|
||
|
|
||
|
def parse_sample(sample):
|
||
|
data = [[int(i) for i in line.split(":")[-1].split(" ") if i != "" ] for line in sample]
|
||
|
return [(data[0][i], data[1][i]) for i in range(len(data[0]))]
|
||
|
|
||
|
|
||
|
def ways(race):
|
||
|
time, dist = race
|
||
|
possible = []
|
||
|
for i in range(time): # C'est pas le plus beau ni le plus efficace
|
||
|
speed = i
|
||
|
time_running = time - i
|
||
|
if speed * time_running > dist:
|
||
|
possible.append(i)
|
||
|
return possible
|
||
|
|
||
|
|
||
|
def mult(l):
|
||
|
if len(l) == 0:
|
||
|
return 1
|
||
|
return l[0]*mult(l[1:])
|
||
|
|
||
|
def part1(sample):
|
||
|
"""Partie 1 du défi"""
|
||
|
data = parse_sample(sample)
|
||
|
return mult([len(ways(race)) for race in data])
|
||
|
|
||
|
def part2(sample):
|
||
|
"""Partie 2 du défi"""
|
||
|
data = parse_2(sample)
|
||
|
return mult([len(ways(race)) for race in data])
|
||
|
|
||
|
|
||
|
def main():
|
||
|
"""Fonction principale"""
|
||
|
sample = read_sample()
|
||
|
print(f"part1: {part1(sample)}")
|
||
|
print(f"part2: {part2(sample)}")
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|