Add 2022 day 03
This commit is contained in:
parent
e589a1f040
commit
8be9505510
59
2022/day03.py
Executable file
59
2022/day03.py
Executable file
@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
"""
|
||||||
|
Jour 03 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/day03.txt', 'r') as f:
|
||||||
|
sample = f.read().split('\n')
|
||||||
|
sample = [ i for i in sample if i != '' ]
|
||||||
|
return sample
|
||||||
|
|
||||||
|
def split(text):
|
||||||
|
half = len(text)/2
|
||||||
|
return text[:int(half)], text[int(half):]
|
||||||
|
|
||||||
|
def commun(tup):
|
||||||
|
p1, p2 = tup
|
||||||
|
for i in p1:
|
||||||
|
if i in p2:
|
||||||
|
return i
|
||||||
|
raise Exception("Pas de lettre en commun")
|
||||||
|
|
||||||
|
def priority(letter):
|
||||||
|
if ord(letter) <= 90:
|
||||||
|
return ord(letter)-65+27
|
||||||
|
return ord(letter)-97+1
|
||||||
|
|
||||||
|
def part1(sample):
|
||||||
|
"""Partie 1 du défi"""
|
||||||
|
return sum(priority(commun(split(i))) for i in sample)
|
||||||
|
|
||||||
|
|
||||||
|
def count(item, iterable):
|
||||||
|
nb = 0
|
||||||
|
for i in iterable:
|
||||||
|
if i == item:
|
||||||
|
nb += 1
|
||||||
|
return nb
|
||||||
|
|
||||||
|
def part2(sample):
|
||||||
|
"""Partie 2 du défi"""
|
||||||
|
somme = 0
|
||||||
|
for i in range(0, len(sample), 3):
|
||||||
|
comm = list(sample[i])
|
||||||
|
for j in comm:
|
||||||
|
if j in sample[i+1] and j in sample[i+2]:
|
||||||
|
break
|
||||||
|
somme += priority(j)
|
||||||
|
return somme
|
||||||
|
|
||||||
|
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