[Project Euler] Problem 22

원문: Problem 22
Using names.txt (right click and 'Save Link/Target As...'), 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?

5천개 이상의 이름을 포함하는 46K 텍스트 파일인 names.txt (우클릭하고 "다른 이름으로 저장...")를 사용해서 알파뱃 순서로 정렬을 시작해라. 그 다음 각각의 이름에 대한 알파뱃 값을 계산하고 이 값에 다가 알파뱃 순서로 정렬된 리스트에 있는 이름의 위치를 곱하면 이름 점수를 얻는다.

예를 들어, 리스트가 알파뱃 순서로 정렬 되었을 때, COLIN 은 3 + 15 + 12 + 9 + 14 = 53 값이고 리스트에서 938번째 이름이다. 따라서 COLIN 은 938 × 53 = 49714 의 점수를 얻게 된다.

이 파일 내에 있는 모든 이름 점수의 합은 무엇인가?

>>> import os
>>> f = open(os.getcwd() + '/names.txt')
>>> sum((index+1)*(sum(map(lambda x : ord(x)-ord('A')+1, name))+(ord('A')-ord('"')-1)*2) for index, name in enumerate(sorted(f.read().split(','))))

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스