2013-05-25 72 views
-2

我找不出爲什麼我的代碼不工作!一切似乎都是狡猾的,但我無法理解錯誤信息足以解決問題。Ruby Koans:評分項目的答案

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

你會得到什麼錯誤? –

+0

http://puu.sh/30UUw.png –

+0

「crealry」不是一個字,也不是「any1」。而且你無法理解錯誤信息*足夠。 – 2013-05-25 17:27:40

回答

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 
+0

實際上2結局錯過了。當'1'語句應該以與'5'語句相同的方式重寫時。 –

+0

@JoshuaScott我只專注於錯誤信息。 :)現在糾正。 –

相關問題