在Ruby中创建一个方形乘法表

在Ruby中创建一个方形乘法表,第1张

概述我在接受采访时得到了这个问题并得到了几乎所有答案,但最后一部分却陷入困境.例如,如果我想获取5的乘法表,我想让输出格式如下: 1, 2, 3, 4, 52, 4, 6, 8, 103, 6, 9, 12, 154, 8, 12, 16, 205, 10, 15, 20, 25 我对此的回答是: def make_table(n) s = "" 1.upto(n).each do | 我在接受采访时得到了这个问题并得到了几乎所有答案,但最后一部分却陷入困境.例如,如果我想获取5的乘法表,我想让输出格式如下:

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中创建一个方形乘法表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1241915.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存