2

我被困在这个问题上。我试图用 Ruby 解决它。

我的回答是

4.times{|i| puts "#{i}"} && 5.upon(7){|i| puts "#{i}}

但是,我不确定它是否正确。

4

2 回答 2

5

这应该适合你

result = (0..3).to_a.product((5..7).to_a)
puts result.inspect
#=> [[0, 5], [0, 6], [0, 7], [1, 5], [1, 6], [1, 7], [2, 5], [2, 6], [2, 7], [3, 5], [3, 6], [3, 7]]
于 2012-11-21T05:23:07.610 回答
2

不确定它是否正确

通常,在这种情况下,您会尝试运行代码。如果你这样做了,你会注意到(逐渐地)你缺少一个引号,没有这样的方法Fixnum#uponupto会这样做),代码一次只输出一个数字,而不是一对,并且第二个循环没有运行(因为times返回nil,并且nil && x被短路,所以x不评估)。

至于你的问题,它要求数字对的序列,而不是它的显示,所以puts不需要。此外,由于您需要对,因此您应该嵌套两个循环,而不是一个接一个。

(0..3).flat_map { |x| (4..7).map { |y| [x, y] } }

将是编写它的一种简单方法。

编辑:flat_mapmap.flatten. 不过,macek 的回答更具体+1。

于 2012-11-21T05:22:39.553 回答