【发布时间】:2012-07-22 19:49:41
【问题描述】:
我正在研究 Ruby Koans,但在弄清楚我编写的方法出了什么问题时遇到了一些麻烦。我在about_scoring_project.rb中,写了骰子游戏的得分方法:
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
对于不熟悉练习的人:
Greed 是一款骰子游戏,您最多可以滚动五个骰子来累积 点。下面的“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 分
下面的测试中给出了更多评分示例:
你的目标是编写 score 方法。
当我尝试运行文件中的最后一个测试时遇到了麻烦:assert_equal 550, score([5,5,5,5])
由于某种原因,我返回 551 而不是 550。感谢您的帮助!
【问题讨论】:
-
我在那个测试中也遇到了麻烦。 ;)
标签: ruby