From 5a5f365919018d3a08c6594ac2c8bc2963cf6821 Mon Sep 17 00:00:00 2001 From: Richard Nienaber Date: Sun, 21 Feb 2021 11:49:25 +0000 Subject: [PATCH] add 33 dice in ruby --- 33 Dice/ruby/dice.rb | 51 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 33 Dice/ruby/dice.rb diff --git a/33 Dice/ruby/dice.rb b/33 Dice/ruby/dice.rb new file mode 100644 index 00000000..58380928 --- /dev/null +++ b/33 Dice/ruby/dice.rb @@ -0,0 +1,51 @@ +def intro + puts " DICE + CREATIVE COMPUTING MORRISTOWN, NEW JERSEY + + + +THIS PROGRAM SIMULATES THE ROLLING OF A +PAIR OF DICE. +YOU ENTER THE NUMBER OF TIMES YOU WANT THE COMPUTER TO +'ROLL' THE DICE. WATCH OUT, VERY LARGE NUMBERS TAKE +A LONG TIME. IN PARTICULAR, NUMBERS OVER 5000. + +" +end + +def get_rolls + while true + number = gets.chomp + return number.to_i if /^\d+$/.match(number) + puts "!NUMBER EXPECTED - RETRY INPUT LINE" + print "? " + end +end + +def dice_roll = rand(6) + 1 # ruby 3, woot! + +def print_rolls(rolls) + values = Array.new(11, 0) + (1..rolls).each { values[dice_roll + dice_roll - 2] += 1 } + puts "\nTOTAL SPOTS NUMBER OF TIMES" + (0..10).each { |k| puts " %-2d %-2d" % [k + 2, values[k]] } +end + +def main + intro + loop do + print "HOW MANY ROLLS? " + rolls = get_rolls + + print_rolls(rolls) + + print "\n\nTRY AGAIN? " + option = (gets || '').chomp.upcase + break unless option == 'YES' + puts + end +end + +trap "SIGINT" do puts; exit 130 end + +main \ No newline at end of file