我正在解决Ruby Koans问题,但我遇到了一些困难,不知道我编写的方法出了什么问题。我现在在about_scoring_project.rb文件中,我已经为骰子游戏编写了score方法。
对于不熟悉该练习的人:
贪心是一个骰子游戏,您可以掷最多五个骰子来累积点数。以下“得分”函数将用于计算单次掷骰子的得分。
贪心掷骰的得分如下: - 三个一的组合值1000分。 - 三个数字(不是一)的组合值为该数字乘以100。例如,三个五的组合值为500分。 - 不在三个数字组合中的一的得分是100分。 - 不在三个数字组合中的五的得分是50分。 - 其他所有情况都为0分。
举例: - score([1,1,1,5,1]) => 1150分 - score([2,3,4,6,2]) => 0分 - score([3,4,5,3,3]) => 350分 - score([1,5,1,2,4]) => 250分
更多的得分示例在下面的测试中提供了。 您的目标是编写得分方法。
当我尝试运行文件中的最后一个测试时,遇到了麻烦:
def score(dice)
return 0 if dice == []
sum = 0
rolls = dice.inject(Hash.new(0)) { |result, element| result[element] += 1; result; }
rolls.each { |key, value|
# special condition for rolls of 1
if key == 1
sum += 1000 | value -= 3 if value >= 3
sum += 100*value
next
end
sum += 100*key | value -= 3 if value >= 3
sum += 50*value if key == 5 && value > 0
}
return sum
end
对于不熟悉该练习的人:
贪心是一个骰子游戏,您可以掷最多五个骰子来累积点数。以下“得分”函数将用于计算单次掷骰子的得分。
贪心掷骰的得分如下: - 三个一的组合值1000分。 - 三个数字(不是一)的组合值为该数字乘以100。例如,三个五的组合值为500分。 - 不在三个数字组合中的一的得分是100分。 - 不在三个数字组合中的五的得分是50分。 - 其他所有情况都为0分。
举例: - score([1,1,1,5,1]) => 1150分 - score([2,3,4,6,2]) => 0分 - score([3,4,5,3,3]) => 350分 - score([1,5,1,2,4]) => 250分
更多的得分示例在下面的测试中提供了。 您的目标是编写得分方法。
当我尝试运行文件中的最后一个测试时,遇到了麻烦:
assert_equal 550, score([5,5,5,5])
由于某种原因,我返回的是551而不是550。感谢您的帮助!