46kバイトの5000以上のファーストネームが書かれたnames.txt(右クリックで「名前を付けてリンク先を保存」を選択)に対して、まず、アルファベット順にソートする。
次に各名前に対してアルファベット値を振り出し、リスト上の該当名の位置順と掛け合わせる。
例えば、COLIN のアルファベット値は $3 + 15 + 12 + 9 + 14 = 53$ であるが、ソートされたリスト上での当該名は 938 番目である。よって、COLIN のストアは、$938\times53 = 49714$ である。
ファイル内のすべての名前のスコアの合計値を算出せよ
CSVファイルであるため csvモジュールを利用してもよいが、高々1行のファイルに不向きなように思える。
そこで " 記号を削除したのち、, 記号で分割した。
import time FILENAME = "p022_names.txt" start = time.clock() s = ctr = 0 with open(FILENAME, "r") as fo: for x in sorted(fo.readline().replace('"', '').split(",")): ctr += 1 for c in x: s += ctr * (ord(c) - ord('A') + 1) print(s) print("processing time : ", time.clock() - start)
0 件のコメント:
コメントを投稿