-2

コードが機能しない理由がわかりません。すべてが難解に思えますが、エラー メッセージを理解できず、修正することができません。

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

アイデアはありますか?

4

1 に答える 1