Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2023
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.29 KB | None | 0 0
  1. lignes2 = """
  2. two1nine
  3. eightwothree
  4. abcone2threexyz
  5. xtwone3four
  6. 4nineeightseven2
  7. zoneight234
  8. 7pqrstsixteen
  9. """
  10.  
  11. lignes1 = """1abc2
  12. pqr3stu8vwx
  13. a1b2c3d4e5f
  14. treb7uchet"""
  15.  
  16. lettre_chiffre = {"one":1, "two":2, "three": 3, "four":4, "five": 5, "six":6, "seven":7, "eight":8, "nine":9 }
  17.  
  18. def pre_traitement(ligne) :
  19.     """pretraite la chaine pour transformer les lettre en chiffres et la simplifier :
  20.        eightwo56 donnera 826 et on élude tout ce qu'il y a entre les deux"""
  21.        
  22.     difo = [1e9]*9
  23.     for chiffre in lettre_chiffre.keys() :
  24.         position_chiffre = 0
  25.         if ligne.find(chiffre) >= 0 :
  26.             position_chiffre = ligne.find(chiffre)
  27.             if difo[lettre_chiffre[chiffre]-1] ==1e9 :
  28.                 difo[lettre_chiffre[chiffre]-1]=position_chiffre
  29.     #print(difo, ligne)
  30.    
  31.     position_premier = min(difo)
  32.     premier= difo.index(min(difo))
  33.    
  34.     difo = [difo[i]  if difo[i]!=1e9 else 0 for i in range(9)] #transforme les 10**9 en 0.
  35.     dernier = difo.index(max(difo))
  36.     posiiton_dernier = max(difo)
  37.     premier_carac = str(premier+1)
  38.     if dernier!=premier :
  39.         dernier_carac = str(dernier+1)
  40.     else :
  41.         dernier_carac=""
  42.     try: #si il y a des lettres/chiffres trouvées
  43.         return ligne[0:position_premier]+premier_carac+dernier_carac+ligne[posiiton_dernier+1:]
  44.     except TypeError : #sinon
  45.         return ligne
  46.  
  47. # lignes = """two1nine
  48. # eightwothree
  49. # abcone2threexyz
  50. # xtwone3four
  51. # 4nineeightseven2
  52. # zoneight234
  53. # 7pqrstsixteen"""
  54.  
  55.  
  56. def renvoie_somme(chaine):
  57.     """revnoie la somme du premier et dernier chiffre d'une chaine constituée de kjlkj1lkjlkj6lkjklj """
  58.     i = 0
  59.     while not chaine[i].isdigit() :
  60.         i+=1
  61.    
  62.     somme_ = chaine[i]
  63.     #parcours par la droite
  64.     j = len(chaine)-1
  65.     while j >0 and  not chaine[j].isdigit() :
  66.         j-=1
  67.     somme_ += chaine[j]
  68.     return int(somme_)
  69.  
  70. ##tests :
  71. somme = 0
  72. for ligne_ in lignes1.split() :
  73.     #parcours par la gauche
  74.     ligne = pre_traitement(ligne_)
  75.    
  76.    
  77.    
  78.     somme += int(renvoie_somme(ligne))
  79. print(somme)
  80.    
  81. somme = 0
  82. for ligne_ in lignes2.split() :
  83.     #parcours par la gauche
  84.     ligne = pre_traitement(ligne_)
  85.    
  86.    
  87.    
  88.     somme += int(renvoie_somme(ligne))
  89. print(somme)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement