我无法弄清楚为什么我的代码不起作用!一切似乎都是愚蠢的,但我无法理解足以解决它的错误信息。
def score(dice)
result = 0
counter = Hash.new(0)
dice.each { |x|
counter[x] +=1
}
counter.each { |x,y|
case x
when 1
if y>3
result+=1000
y-=3
else
y.times do result+=100
end
when 5
if y>3
result+=500
y-=3
y.times do result+=50
end
else
if y>3
result+= x*100
end
end
}
end
class AboutScoringProject < EdgeCase::Koan
def test_score_of_an_empty_list_is_zero
assert_equal 0, score([])
end
def test_score_of_a_single_roll_of_5_is_50
assert_equal 50, score([5])
end
def test_score_of_a_single_roll_of_1_is_100
assert_equal 100, score([1])
end
def test_score_of_multiple_1s_and_5s_is_the_sum_of_individual_scores
assert_equal 300, score([1,5,5,1])
end
def test_score_of_single_2s_3s_4s_and_6s_are_zero
assert_equal 0, score([2,3,4,6])
end
def test_score_of_a_triple_1_is_1000
assert_equal 1000, score([1,1,1])
end
def test_score_of_other_triples_is_100x
assert_equal 200, score([2,2,2])
assert_equal 300, score([3,3,3])
assert_equal 400, score([4,4,4])
assert_equal 500, score([5,5,5])
assert_equal 600, score([6,6,6])
end
def test_score_of_mixed_is_sum
assert_equal 250, score([2,5,2,2,3])
assert_equal 550, score([5,5,5,5])
end
end
any1有想法吗?
答案 0 :(得分:2)
您错过了上面发布的代码中的两个end
。
更改代码并写为:
case x
when 1
if y>3
result+=1000
y-=3
else
y.times { result+=100 }
end
when 5
if y>3
result+=500
y-=3
y.times { result+=50 }
end
else
if y>3
result+= x*100
end
end