From a70798cfa504d6351e21da8b3120cd65bde146a6 Mon Sep 17 00:00:00 2001 From: Richard Nienaber Date: Sat, 20 Feb 2021 18:07:28 +0000 Subject: [PATCH] add 32 diamond in ruby --- 32 Diamond/ruby/diamond.rb | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 32 Diamond/ruby/diamond.rb diff --git a/32 Diamond/ruby/diamond.rb b/32 Diamond/ruby/diamond.rb new file mode 100644 index 00000000..1c8493a3 --- /dev/null +++ b/32 Diamond/ruby/diamond.rb @@ -0,0 +1,45 @@ +def intro + print " DIAMOND + CREATIVE COMPUTING MORRISTOWN, NEW JERSEY + + + +FOR A PRETTY DIAMOND PATTERN, +TYPE IN AN ODD NUMBER BETWEEN 5 AND 21? " +end + +def get_facets + while true + number = gets.chomp + if /^\d+$/.match(number) + return number.to_i + end + puts "!NUMBER EXPECTED - RETRY INPUT LINE" + print "? " + end +end + +def get_diamond_lines(facets) + spacers = (facets - 1) / 2 + lines = [' ' * spacers + 'C' + ' ' * spacers] + lines += (1...facets).step(2).to_a.map { |v| + spacers -= 1 + ' ' * spacers + 'CC' + '!' * v + ' ' * spacers + } + lines + lines[0..-2].reverse +end + +def draw_diamonds(lines) + repeat = 60 / lines[0].length + (0...repeat).each { lines.map { |l| l * repeat }.each { |l| puts l } } +end + +def main + intro + facets = get_facets + puts + lines = get_diamond_lines(facets) + draw_diamonds(lines) +end + +main \ No newline at end of file