Forked from dbc-challenges/phase0_template_gist.rb
Last active
August 29, 2015 13:57
-
-
Save carolineartz/350045da3f227070c496 to your computer and use it in GitHub Desktop.
print out a times table
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# PSEUDOCODE | |
# INPUT rows: integer (0 or positive) for number of rows (/columns) | |
# OUPUT times table: printed times table with the input number of rows/columns | |
# STEPS | |
# SET a collection with elements 1..rows | |
# SET counter to 1 | |
# WHILE counter is less than/equal to rows | |
# ITERATE over elements of collection | |
# MULTIPLY element by counter | |
# replace element with result | |
# END iterator | |
# JOIN collection with space delimiter | |
# PRINT string on a single line | |
# INCREMENT counter by 1 | |
# END while | |
# | |
# INITIAL CODE: | |
def times_table(rows) | |
if rows > 0 | |
array = (1..rows).to_a | |
i = 1 | |
while i <= rows | |
puts array.map {|e| "#{e*i} "}.join(' ') | |
i += 1 | |
end | |
end | |
end | |
# REFACTORED CODE: | |
def times_table(rows) | |
array = (1..rows).to_a | |
i = 1 | |
while i <= rows | |
puts array.map {|e| " %3d" % (e * i)}.join(' ') | |
i += 1 | |
end | |
end | |
# INCLUDE REFLECTION HERE: | |
# I tend to jump to using arrays quite often. I definitely think this problem can be solved without | |
# pushing the rows to an integer array, but I decided to go with my initial approach and I think it | |
# turned out alright. Although not a requirement, I wanted to learn how ruby implements printing | |
# formatted strings--I knew how to do it in Java and wasn't sure if there was somethign similar. Although | |
# it seems a bit less robust but the same type of flags/concepts. It took me a few atempts to figure out | |
# how to implement it with my code but i got it working and my times table looks much prettier :) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment