Projet Euler # 17 "Nombre de caractères" en Python

Problème 16 "Nombre de caractères"

Si vous écrivez les nombres de 1 à 5 en anglais, c'est un, deux, trois, quatre, cinq et un total de 3 + 3 + 5 + 4 + 4 = 19 caractères sont utilisés. Ensuite, si vous écrivez tous les nombres de 1 à 1000 (mille) en anglais, combien de caractères seront au total? Remarque: ne comptez pas les caractères vides ou les traits d'union. Par exemple, 342 (trois cent quarante-deux) compte pour 23 caractères, 115 (cent quinze) compte pour 20 caractères. Notez que "et" est utilisé. Coutume britannique.

Python


# n = 5
n = 1000

numbers = {1:"one", 2:"two", 3:"three", 4:"four", 5:"five", 
           6:"six", 7:"seven", 8:"eight", 9:"nine", 10:"ten", 
           11:"eleven", 12:"twelve", 13:"thirteen", 14:"fourteen", 15:"fifteen", 
           16:"sixteen", 17:"seventeen", 18:"eighteen", 19:"nineteen", 20:"twenty", 
           30:"thirty", 40:"forty", 50:"fifty", 60:"sixty", 70:"seventy", 
           80:"eighty", 90:"ninety", 1000:"one thousand"}

def number_to_word(num):
  if num in numbers:
    return numbers[num]
  elif num < 100:
    a = num % 10
    b = (num // 10) * 10
    return number_to_word(b) + "-" + number_to_word(a)
  else:
    a = num % 100
    b = num // 100
    if a == 0:
      return number_to_word(b) + " hundred"
    else:
      return number_to_word(b) + " hundred and " + number_to_word(a)

def to_character_num(word):
  return len(word.replace(" ", "").replace("-", ""))

seq = range(1, n+1)
words = map(number_to_word, seq)
result = sum(map(to_character_num, words))

print result
print result == 21124
print words[:6]
print words[-3:]

résultat


21124
True
['one', 'two', 'three', 'four', 'five', 'six']
['nine hundred and ninety-eight', 'nine hundred and ninety-nine', 'one thousand']

Recommended Posts

Projet Euler # 17 "Nombre de caractères" en Python
Projet Euler # 7 "1000 1er nombre premier" en Python
Projet Euler # 16 "Somme des pouvoirs" en Python
Projet Euler # 1 "Multiple de 3 et 5" en Python
Projet Euler # 8 "Produit maximum en chaîne numérique" en Python
Projet Euler # 10 "somme des nombres premiers" en Python
Projet Euler n ° 12 "Triangles hautement ajustés" en Python
Projet Euler # 13 "Somme des grands nombres" en Python
Projet Euler # 6 "Différence de somme des carrés" en Python
Programmation fonctionnelle dans Python Project Euler 1
[Note] Projet Euler en Python (problème 1-22)
Programmation fonctionnelle dans Python Project Euler 3
Programmation fonctionnelle dans Python Project Euler 2
Projet Euler # 15 "Lattice Path" en Python
Projet Euler # 4 "Calligraphie maximum" en Python
Nombre maximum de caractères dans l'appel shell Python3 (par OS)
Projet Euler # 3 "Maximum Prime Factors" en Python
Projet Euler # 11 "Produit maximum dans la grille" en Python
Projet Euler # 9 "Numéro spécial Pitagolas" en Python
Projet Euler # 14 "Colonne de nombre de collats la plus longue" en Python
Projet Euler # 2 "Even Fibonacci Number" en Python
Comptez bien le nombre de caractères thaïlandais et arabes en Python
Premier nombre 2 en Python
Sortie du nombre de cœurs de processeur en Python
Comment obtenir le nombre de chiffres en Python
Divise la chaîne de caractères par le nombre de caractères spécifié. En Ruby et Python.
Obtenir la taille (nombre d'éléments) de Union Find en Python
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Comptez le nombre de caractères dans le texte dans le presse-papiers sur Mac
Obtenez le nombre d'éléments spécifiques dans la liste python
Ce que j'ai appris en résolvant 30 questions du projet python Euler
Python --Trouvez le nombre de groupes dans l'expression regex
[Homologie] Comptez le nombre de trous dans les données avec Python
Reconnaissance des nombres dans les images avec Python
Manipulation des pixels d'image en Python
Projet Euler 10 "Somme des nombres premiers"
Diviser timedelta dans la série Python 2.7
Générateur principal infini en Python3
Échappement automatique des paramètres MySQL en python
Gestion des fichiers JSON en Python
Implémentation du jeu de vie en Python
Affichage de la forme d'onde audio en Python
Créer une documentation de projet Python dans Sphinx
La loi des nombres en python
Etude, jeu de numérotation avec Python
Implémentation du tri original en Python
Projet Euler 11 "Produit maximum dans la grille"
Brouillage réversible d'entiers en Python
Projet Euler 9 Conservation des résultats des calculs
Projet Euler 37
Projet Euler 7
Projet Euler 47
Projet Euler 31
Projet Euler 4
Projet Euler 38
Projet Euler 17
Projet Euler 26
Projet Euler 8
Projet Euler 23
Projet Euler 22
[Python] Réduisons le nombre d'éléments dans le résultat dans le fonctionnement de l'ensemble