From: Nate Lindstrom Date: 2011-12-09T05:11:11+09:00 Subject: Greed Dice Game Scoring from Ruby Koans ------=_NextPart_000_0247_01CCB5A2.73CF5A00 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hey everyone! I'm a long-time lurker, and this is my first post. I'm working through the Edgecase Ruby Koans (http://www.rubykoans.com/), and have written a solution to scoring the game of dice called "greed." However, while it passes all the assertion tests, I am wondering if my code is sufficiently "Rubyesque"? I appreciate any and all feedback! # Greed is a dice game where you roll up to five dice to accumulate # points. The following "score" function will be used calculate the # score of a single roll of the dice. # # A greed roll is scored as follows: # # * A set of three ones is 1000 points # # * A set of three numbers (other than ones) is worth 100 times the # number. (e.g. three fives is 500 points). # # * A one (that is not part of a set of three) is worth 100 points. # # * A five (that is not part of a set of three) is worth 50 points. # # * Everything else is worth 0 points. # # # Examples: # # score([1,1,1,5,1]) => 1150 points # score([2,3,4,6,2]) => 0 points # score([3,4,5,3,3]) => 350 points # score([1,5,1,2,4]) => 250 points # # More scoring examples are given in the tests below: # # Your goal is to write the score method. def score(dice) total = 0 dice.uniq.each do |num| if num == 1 if dice.count(1) >= 3 total += 1000 total += 100 * (dice.count(1) - 3) else total += 100 * dice.count(1) end elsif num == 5 if dice.count(5) >= 3 total += 5 * 100 total += 50 * (dice.count(5) - 3) else total += 50 * dice.count(5) end else total += num * 100 if dice.count(num) >= 3 end end total end ------=_NextPart_000_0247_01CCB5A2.73CF5A00--