Add 2022 day 05
This commit is contained in:
parent
7a7965ea41
commit
f4e155263e
69
2022/day05.py
Executable file
69
2022/day05.py
Executable file
@ -0,0 +1,69 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
"""
|
||||||
|
Jour 05 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/day05.txt', 'r') as f:
|
||||||
|
sample = f.read().split('\n\n')
|
||||||
|
|
||||||
|
base = [[] for _ in range(int(len(sample[0][:-1].split("\n")[0])/4)+1)]
|
||||||
|
for line in sample[0].split("\n"):
|
||||||
|
for j in range(0, len(line) -1, 4):
|
||||||
|
if line[j+1] != " ":
|
||||||
|
base[int(j/4)].append(line[j+1])
|
||||||
|
|
||||||
|
for i in base:
|
||||||
|
i.reverse()
|
||||||
|
|
||||||
|
moves = [ (int(i.split(" ")[1]), int(i.split(" ")[3]), int(i.split(" ")[5])) for i in sample[1].split("\n") if i != '' ]
|
||||||
|
return (base, moves)
|
||||||
|
|
||||||
|
def move1(nb, init, fin, base):
|
||||||
|
sp = base[init][-nb:]
|
||||||
|
base[init] = base[init][:-nb]
|
||||||
|
sp.reverse()
|
||||||
|
for i in sp:
|
||||||
|
base[fin].append(i)
|
||||||
|
return base
|
||||||
|
|
||||||
|
def part1(sample):
|
||||||
|
"""Partie 1 du défi"""
|
||||||
|
base, moves = sample
|
||||||
|
for (number, init, fin) in moves:
|
||||||
|
base = move1(number, init-1, fin-1, base)
|
||||||
|
|
||||||
|
text = ""
|
||||||
|
for i in base:
|
||||||
|
text += i[-1]
|
||||||
|
|
||||||
|
return text
|
||||||
|
|
||||||
|
def move2(nb, init, fin, base):
|
||||||
|
sp = base[init][-nb:]
|
||||||
|
base[init] = base[init][:-nb]
|
||||||
|
for i in sp:
|
||||||
|
base[fin].append(i)
|
||||||
|
return base
|
||||||
|
|
||||||
|
def part2(sample):
|
||||||
|
"""Partie 1 du défi"""
|
||||||
|
base, moves = sample
|
||||||
|
for (number, init, fin) in moves:
|
||||||
|
base = move2(number, init-1, fin-1, base)
|
||||||
|
|
||||||
|
text = ""
|
||||||
|
for i in base:
|
||||||
|
text += i[-1]
|
||||||
|
|
||||||
|
return text
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Fonction principale"""
|
||||||
|
print(f"part1: {part1(read_sample())}")
|
||||||
|
print(f"part2: {part2(read_sample())}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user