+ 3
My daughter and I are kind of at a stand still with Ruby on our PC using "Atom". Would anyone kindly help us figure this out?
4 Answers
+ 7
Code Playground doesn't provide a live console, so you have to input everything in one go before the program runs. Split your input into multiple lines, e.g.
5
a
o
I just reviewed your latest version of the code, you're almost there. You might want to convert shape_size to integer via .to_i, fix some syntax errors (gets, end) and you're done.
+ 7
@Hatsy Rei is right there needs to be an integer conversion. The input was setup incorrectly and here is the fix.
#
# Ruby for Kids Project 4: Shapes
# Programmed By: KP
# Experiment with drawing ASCII art Shapes using code.
#
puts "Welcome to Shapes"
print "How big do you want your shape? "
shape_size = gets.chomp
puts shape_size
print "Outside letter: "
outside_letter = gets.chomp
print outside_letter
print "Inside letter: "
inside_letter = gets.chomp
puts "About to draw a shape #{shape_size} big"
puts "using #{outside_letter} for the edge"
puts "and #{inside_letter} for the inside"
height = shape_size
width = shape_size
1.upto(height) do |row|
# drawing code goes here
if row == 1
puts outside_letter * width
elsif row == height
puts outside_letter * width
else
middle = inside_letter * (width - 2)
puts "#{outside_letter} #{middle} #{inside_letter}"
end
end
=begin
When =begin is on the start of a line, everythinf is a comment untila line is found with = end at the beginning of a line. I used this to comment everything after the shape_size to locate some problems with the code.
notice the change to gets.chomp
=end
#this is where it says "Looks like your program needs input"
#then "split multiple inputs into seperate lines"
# this is where im stuck..
+ 3
I'm thinking shape size would determine the width and height of the shape. E.g. shape size 8 would mean a square of 8*8.
In this case (8), we will be printing 8 lines, each containing 8 characters. The topmost and the bottommost line which represents two of four edges would be filled with outside_letter. The remaining 6 (8-2) lines in between would begin and end with outside_letter, and 6 characters in between would be filled with inside_letter.
shape_size = 5
outside_letter = a
inside_letter = o
Output :
aaaaa # topmost line
aoooa
aoooa # (shape_size - 2) lines in mid
aoooa
aaaaa # bottommost line
What I just said directly translates to:
puts (outside_letter * shape_size) + "\n" + (outside_letter + (inside_letter * (shape_size - 2))+ outside_letter + "\n") * (shape_size - 2) + (outside_letter * shape_size)
I'm not proficient at Ruby, there's probably a better way than this.
https://code.sololearn.com/cLR4fuXW91YK/?ref=app
+ 1
i changed a few things and added a few comments at the end.. im still a bit confused