moche mais ça passe
This commit is contained in:
parent
a4814502c4
commit
1796d6a0c9
|
@ -0,0 +1,51 @@
|
|||
import sys
|
||||
|
||||
myList = list(list(map(str,s)) for s in sys.stdin.read().splitlines())
|
||||
|
||||
def if_symbol_adj(l, n, i):
|
||||
for m in [n-1, n, n+1]:
|
||||
if m < 0 or m > len(l)-1: continue
|
||||
for j in [i-1, i, i+1]:
|
||||
if j < 0 or j > len(l[m])-1: continue
|
||||
if l[m][j] == "*" :
|
||||
return True, m, j
|
||||
else:
|
||||
pass
|
||||
return False, 0, 0
|
||||
|
||||
def gear(list_etoile, etoile_en_cours, liste_nb):
|
||||
for idx in range(len(list_etoile)):
|
||||
if list_etoile.count(list_etoile[idx]) == 2 and etoile_en_cours == list_etoile[idx]:
|
||||
return int(liste_nb[idx])
|
||||
return 0
|
||||
|
||||
def main(S = 0):
|
||||
list_etoile = []
|
||||
liste_nb = []
|
||||
etoile_en_cours = [0,0]
|
||||
# de haut en bas
|
||||
for n in range(len(myList)):
|
||||
nb = ""
|
||||
if_sum = False
|
||||
# de gauche à droite
|
||||
for i in range(len(myList[n])):
|
||||
if myList[n][i].isdigit():
|
||||
nb = "".join([nb, myList[n][i]])
|
||||
result, x, y = if_symbol_adj(myList, n, i)
|
||||
if_sum = if_sum or result
|
||||
etoile_en_cours = [max(x, etoile_en_cours[0]) , max(y, etoile_en_cours[1])]
|
||||
|
||||
if not myList[n][i].isdigit() or i == len(myList[n]) -1:
|
||||
# soit pas encore un nombre soit la fin d'un nombre, soit la fin d'une ligne
|
||||
if nb!="":
|
||||
#print(nb, if_sum)
|
||||
list_etoile.append((etoile_en_cours))
|
||||
liste_nb.append((nb))
|
||||
if if_sum: S+= (int(nb) * gear(list_etoile, etoile_en_cours, liste_nb))
|
||||
if_sum = False
|
||||
nb = ""
|
||||
etoile_en_cours = [0,0]
|
||||
return S
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(main())
|
Loading…
Reference in New Issue