1,2,3,4,52,6,8,103,9,12,154,16,205,10,15,20,25
我对此的回答是:
def make_table(n) s = "" 1.upto(n).each do |i| 1.upto(n).each do |j| s += (i*j).to_s end s += "\n" end p send
但是make_table(5)的输出是:
"12345\n246810\n3691215\n48121620\n510152025\n"
我尝试过使用数组的变体,但我得到了类似的输出.
我错过了什么或者我应该如何看待问题的最后部分?
解决方法 您可以使用map和join在一行中获取String:n = 5 puts (1..n).map { |x| (1..n).map { |y| x * y }.join(',') }.join("\n")
它遍历行(x = 1,x = 2,…).对于每一行,它迭代单元格(y = 1,y = 2,…)并计算x * y.它连接一行中的每个单元格,并使用换行符连接表格中的每一行:
1,25
如果要保持逗号对齐,可以使用rjust:
puts (1..n).map { |x| (1..n).map { |y| (x * y).to_s.rjust(3) }.join(',') }.join("\n")
它输出:
1,5 2,10 3,15 4,20 5,25
在对齐逗号之前,您甚至可以想象并计算n ** 2的宽度:
n = 11wIDth = Math.log10(n**2).ceil + 1puts (1..n).map { |x| (1..n).map { |y| (x * y).to_s.rjust(wIDth) }.join(',5,7,11 2,14,18,22 3,21,24,27,30,33 4,28,32,36,40,44 5,25,35,45,50,55 6,42,48,54,60,66 7,49,56,63,70,77 8,64,72,80,88 9,81,90,99 10,100,110 11,22,33,44,55,66,77,88,99,110,121总结
以上是内存溢出为你收集整理的在Ruby中创建一个方形乘法表全部内容,希望文章能够帮你解决在Ruby中创建一个方形乘法表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)