Euler project 22

Problem 22 †
5000個以上の名前が書かれている46Kのテキストファイルnames.txt を用いる. まずアルファベット順にソートせよ.

のち, 各名前についてアルファベットに値を割り振り, リスト中の出現順の数と掛け合わせることで, 名前のスコアを計算する.

たとえば, リストがアルファベット順にソートされているとすると, COLINはリストの938番目にある. またCOLINは3 + 15 + 12 + 9 + 14 = 53という値を持つ. よってCOLINは938 × 53 = 49714というスコアを持つ.

ファイル中の全名前のスコアの合計を求めよ.

import csv
import sys
import numpy as np
total=[]

f=open('names.txt','rt')
reader=csv.reader(f)
data=np.array([row for row in reader])
data=np.sort(data)
for i in range(len(data[0])):
	total.append( sum([ ord(x)-64 for x in data[0][i] ]) * (i+1))
	
print sum(total)

一行で解いている人がいてまじ白目
stringモジュールを使えばもっと簡単に解けるのか....

ord関数は文字を文字コードに変換する。