Problem 22

Using names.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 × 53 = 49714.

What is the total of all the name scores in the file?

I love abusing map.

?View Code PYTHON
import re
 
def word_sum(word):
  word_sum = sum(map(lambda letter: ord(letter)-ord('A')+1, word))
  return word_sum
 
def name_scores_sum(path):
  f = file(path)
  names = f.read()
  names = sorted(re.findall('([A-Z]+)',names))
  sums = map(word_sum,names)
  scores = map(lambda (index,sum): index*sum, enumerate(sums,1))
  return sum(scores)
 
>>> name_scores_sum(path)
871198282

Tags: , , , , , ,

3 Responses to “Problem 22”

  1. theStack says:

    Wow, now every idiot who finds this site can just solve the project euler problems with copy and paste – very intelligent ;-)

  2. Angela says:

    I guess that they could, but what on earth would they get out of it?

  3. Sgt OQ5 says:

    Stack,

    The forums at PE are close, the problems are 7 years old and these solution show more thought and intelligence than most of the useless comments in the forum. Such as: “I did it like smurf001″ or “Here’s my sloppy inefficient code I hacked.”

    Think about how much you sound like a self-righteous prig when you make such asinine comments without consideration for purpose.

Leave a Reply