advent-of-code/2022/day02.py

56 lines
1.3 KiB
Python
Raw Permalink Normal View History

2022-12-03 14:09:05 +01:00
#!/usr/bin/python3
"""
Jour 02 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/day02.txt', 'r') as f:
sample = f.read().split('\n')
sample = [ i for i in sample if i != '' ]
return sample
def score(text):
fst = text.split(" ")[0]
snd = text.split(" ")[1]
choice = ord(snd)-87
if ord(fst) == ord(snd)-23:
return choice+3 # Nul
perdants = [("A", "Z"), ("B", "X"), ("C", "Y")]
if (fst, snd) in perdants:
return choice # Défaite
return choice+6 # Victoire
def part1(sample):
"""Partie 1 du défi"""
return sum([score(i) for i in sample])
def score2(text):
fst = text.split(" ")[0]
snd = text.split(" ")[1]
val = {
"X": {"A":3, "B":1, "C":2},
"Z": {"A":2, "B":3, "C":1},
}
if snd=="Y":
return (ord(fst)-64) +3 #tie
if snd=="X":
return val["X"][fst]#Loss
if snd=="Z":
return val["Z"][fst]+6#Win
def part2(sample):
"""Partie 2 du défi"""
return sum([score2(i) for i in sample])
def main():
"""Fonction principale"""
sample = read_sample()
print(f"part1: {part1(sample)}")
print(f"part2: {part2(sample)}")
if __name__ == "__main__":
main()