Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- lignes2 = """
- two1nine
- eightwothree
- abcone2threexyz
- xtwone3four
- 4nineeightseven2
- zoneight234
- 7pqrstsixteen
- """
- lignes1 = """1abc2
- pqr3stu8vwx
- a1b2c3d4e5f
- treb7uchet"""
- lettre_chiffre = {"one":1, "two":2, "three": 3, "four":4, "five": 5, "six":6, "seven":7, "eight":8, "nine":9 }
- def pre_traitement(ligne) :
- """pretraite la chaine pour transformer les lettre en chiffres et la simplifier :
- eightwo56 donnera 826 et on élude tout ce qu'il y a entre les deux"""
- difo = [1e9]*9
- for chiffre in lettre_chiffre.keys() :
- position_chiffre = 0
- if ligne.find(chiffre) >= 0 :
- position_chiffre = ligne.find(chiffre)
- if difo[lettre_chiffre[chiffre]-1] ==1e9 :
- difo[lettre_chiffre[chiffre]-1]=position_chiffre
- #print(difo, ligne)
- position_premier = min(difo)
- premier= difo.index(min(difo))
- difo = [difo[i] if difo[i]!=1e9 else 0 for i in range(9)] #transforme les 10**9 en 0.
- dernier = difo.index(max(difo))
- posiiton_dernier = max(difo)
- premier_carac = str(premier+1)
- if dernier!=premier :
- dernier_carac = str(dernier+1)
- else :
- dernier_carac=""
- try: #si il y a des lettres/chiffres trouvées
- return ligne[0:position_premier]+premier_carac+dernier_carac+ligne[posiiton_dernier+1:]
- except TypeError : #sinon
- return ligne
- # lignes = """two1nine
- # eightwothree
- # abcone2threexyz
- # xtwone3four
- # 4nineeightseven2
- # zoneight234
- # 7pqrstsixteen"""
- def renvoie_somme(chaine):
- """revnoie la somme du premier et dernier chiffre d'une chaine constituée de kjlkj1lkjlkj6lkjklj """
- i = 0
- while not chaine[i].isdigit() :
- i+=1
- somme_ = chaine[i]
- #parcours par la droite
- j = len(chaine)-1
- while j >0 and not chaine[j].isdigit() :
- j-=1
- somme_ += chaine[j]
- return int(somme_)
- ##tests :
- somme = 0
- for ligne_ in lignes1.split() :
- #parcours par la gauche
- ligne = pre_traitement(ligne_)
- somme += int(renvoie_somme(ligne))
- print(somme)
- somme = 0
- for ligne_ in lignes2.split() :
- #parcours par la gauche
- ligne = pre_traitement(ligne_)
- somme += int(renvoie_somme(ligne))
- print(somme)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement