Итак, я полный нюби, работающий с http://www.rubykoans.com/, и я застрял на about_scoring_project.rb.Это мой удар по методу оценки.
def score(dice)
score = 0;
if dice.respond_to?("include?") then
# add 1000 points if rolled 3 ones
score += 1000 if dice.include?([1, 1, 1])
# add 100 points times die face value if rolled 3 of a number between 2 and 6
(2...6).each do |die|
score += die*100 if dice.include?([die, die, die])
# award points for each 1 or 5 not a part of a set of 3
leftovers = dice - [1,1,1]
leftovers -= [5,5,5]
leftovers.each do |leftover|
score += 100 if leftover == 1
score += 50 if leftover == 5
end
end
end
score
end
class AboutScoringAssignment < EdgeCase::Koan
def test_score_examples
assert_equal 1150, score([1,1,1,5,1])
assert_equal 0, score([2,3,4,6,2])
assert_equal 350, score([3,4,5,3,3])
assert_equal 250, score([1,5,1,2,4])
end
end
При вызове партитуры с первого assert_equal я ожидаю, что dice.include? ([1,1,1]) оценит как true, но оценивается как ноль (и оценка возвращается0 вместо 1150).
Я попробовал это отдельно ...
require 'test/unit'
class EnumerableTests < Test::Unit::TestCase
def test_include
my_enumerable = [1,1,1,5,1]
assert true, my_enumerable.include?([1,1,1])
end
end
... и тест прошел, так что я не знаю, почему у меня ноль в моемметод оценки.
Кто-нибудь видит, что я делаю не так?