Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/ruby
- require "rspec"
- class DiceGame
- attr_accessor :values
- attr_accessor :rules
- def initialize
- @rules = [
- [3, 1, 1000], [3, 5, 600], [3, 4, 400],
- [3, 3, 200], [3, 2, 200], [1, 1, 100],
- [1, 5, 50]
- ]
- end
- def roll(count)
- @values = count.times.map { Random.rand(6) + 1}
- end
- def calc
- results = get_points
- sum = 0
- @rules.each do |rule|
- count = results[rule[1]]/rule[0]
- sum += count * rule[2]
- results[rule[1]] -= count*rule[0]
- end
- sum
- end
- def get_points
- results = Hash.new
- results.default = 0
- @values.each do |value|
- results[value] += 1
- end
- results
- end
- end
- RSpec.describe DiceGame do
- describe "#calc" do
- it "Correct_for [1, 1, 1, 1, 1, 1]" do
- game = DiceGame.new
- game.values = [1, 1, 1, 1, 1, 1]
- expect(game.calc).to eq(2000)
- end
- it "Correct_for [1, 1, 1, 1, 1, 3]" do
- game = DiceGame.new
- game.values = [1, 1, 1, 1, 1, 3]
- expect(game.calc).to eq(1200)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement