Add 2022 day 10
This commit is contained in:
parent
19ef7c6b94
commit
686fbe963e
58
2022/day10.py
Executable file
58
2022/day10.py
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
"""
|
||||||
|
Jour 10 du défi Advent Of Code pour l'année 2022
|
||||||
|
"""
|
||||||
|
|
||||||
|
def read_sample():
|
||||||
|
"""récupère les entrées depuis le fichier texte correspondant"""
|
||||||
|
with open('inputs/day10.txt', 'r') as f:
|
||||||
|
sample = f.read().split('\n')
|
||||||
|
sample = [ i for i in sample if i != '' ]
|
||||||
|
return sample
|
||||||
|
|
||||||
|
|
||||||
|
def generate(sample):
|
||||||
|
cursor = 0
|
||||||
|
X_values = [1]
|
||||||
|
X = 1
|
||||||
|
|
||||||
|
for instr in sample:
|
||||||
|
if instr.split(" ")[0] == "noop":
|
||||||
|
X_values.append(X)
|
||||||
|
else:
|
||||||
|
X_values.append(X)
|
||||||
|
X_values.append(X)
|
||||||
|
X += int(instr.split(" ")[1])
|
||||||
|
|
||||||
|
return X_values
|
||||||
|
|
||||||
|
|
||||||
|
def part1(sample):
|
||||||
|
"""Partie 1 du défi"""
|
||||||
|
checks = [20, 60, 100, 140, 180, 220]
|
||||||
|
X_values = generate(sample)
|
||||||
|
|
||||||
|
return sum([X_values[i]*i for i in range(len(X_values)) if i in checks])
|
||||||
|
|
||||||
|
def part2(sample):
|
||||||
|
"""Partie 2 du défi"""
|
||||||
|
checks = [20, 60, 100, 140, 180, 220]
|
||||||
|
positions = [[' ' for _ in range(40)] for _ in range(6)]
|
||||||
|
X_values = generate(sample)[1:]
|
||||||
|
|
||||||
|
for i in range(6):
|
||||||
|
for j in range(40):
|
||||||
|
if j in [X_values[i*40+j]-1, X_values[i*40+j], X_values[i*40+j]+1]:
|
||||||
|
positions[i][j] = '#'
|
||||||
|
|
||||||
|
return ("\n"+"\n".join(["".join(positions[i]) for i in range(len(positions))]))
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Fonction principale"""
|
||||||
|
sample = read_sample()
|
||||||
|
print(f"part1: {part1(sample)}")
|
||||||
|
print(f"part2: {part2(sample)}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user