姓名得分

作者:L. Grondin

https://projecteuler.net/problem=22

使用 names.txt(一个包含五千多个名字的 46K 文本文件),首先按字母顺序对其进行排序。然后算出每个名字的字母值,将该值与其在列表中的字母顺序位置相乘,即可得到一个名字得分。

例如,当列表按字母顺序排序时,COLIN 的值为 3 + 15 + 12 + 9 + 14 = 53,它是列表中的第 938 个名字。所以,COLIN 的得分是 938 × 53 = 49714。

文件中所有名字得分的总和是多少?

源代码:prob022-grondilu.pl

use v6;

my $i = 1;
constant A = 'A'.ord - 1;
my $names-file = $*SPEC.catdir($*PROGRAM-NAME.IO.dirname, "names.txt");
my $data = slurp $names-file;
my @names = sort $data.subst('"', '', :g).split(',');
say [+] gather
for @names {
    take $i++ * [+] .comb».ord »-» A;
}