Euler 022

Publié le 22/12/16

Using euler022.txt, a 46K text file containing over five-thousand first names, begin by sorting it into alphabetical order.
Then working out the alphabetical value for each name, multiply this value by its alphabetical position in the list to obtain a name score.
For example, when the list is sorted into alphabetical order, COLIN, which is worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list.
So, COLIN would obtain a score of 938\times 53 = 49714.
What is the total of all the name scores in the file? (answer: 871198282)
Le contenu du fichier euler022.txt est:
« MARY », »PATRICIA », »LINDA »,…, »BRODERICK », »ALONSO »

  • ligne 2: on ouvre le fichier, on le lit par read (le résultat est une unique chaîne de caractère) et on splite cette chaîne au niveau des virgules; on obtient alors la liste [‘ »MARY »‘,' »PATRICIA »‘,' »LINDA »‘,…]
  • ligne 3: on évalue chaque élément de la liste (pour éliminer les apostrophes extérieures) et on trie la liste des chaînes; le contenu de f est alors
    [‘AARON’,’ABBEY’,’ABBIE’,…,’ZULA’, ‘ZULEMA’, ‘ZULMA’]
  • ligne 4: on définit une fonction donnant le score d’une chaîne de caractères.
  • On calcule la somme des produits position*score pour chacune des chaînes.