项目Euler 022'命名分数'

时间:2015-06-28 06:51:58

标签: ruby

我对Project Euler 022的解决方案运行不正确,我无法理解原因:

$scores = {
    "A" => 1,
    "B" => 2,
    "C" => 3,
    ...
    "Z" => 26
}

def alphabetScore(name)
    nameScore = 0
    array = name.split(//)
    array.each { |n| nameScore += $scores[n] }
    return nameScore
end

file = File.read("p022_names.txt").split(",")
file.map! { |n| n.tr('^A-Za-z0-9','') }

totalScore = 0

file.each do |findScore|
    nameScore = alphabetScore(findScore)
    totalScore += nameScore
end

p totalScore
# p file # to check that 'file' is indeed an array of strings

测试单个名称,例如p alphabetScore("AGNES")会返回正确的值但是当我得到每个名称的得分时,我得到324536,这是不正确的(正确的答案是871198282)。我唯一的猜测是,为什么这不起作用的是其中一个名称(可能是导致totalScore超过324536的名称)在某种程度上被打破。

1 个答案:

答案 0 :(得分:1)

看起来你错过了提示的这一部分:

  

然后计算每个名称的字母值,将此值乘以列表中的字母位置以获得名称分数。