1

我有这个 for 循环:

 for i in 0...4
  for j in 0...4
      puts "#{i}:#{j}"
  end
end

输出:

0:0
0:1
0:2
0:3
1:0
1:1
1:2
1:3
2:0
2:1
2:2
2:3
3:0
3:1
3:2
3:3

但我喜欢生成这个结果的矩阵。我需要将所有 0: 放在一行中,将所有 1: 放在一行中以生成以下内容:

0:0 0:1 0:2 0:3
1:0 1:1 1:2 1:3
2:0 2:1 2:2 2:3
3:0 3:1 3:2 3:3

有任何想法吗?谢谢

4

2 回答 2

3

如文档中所述,puts “在任何尚未以换行序列结尾的内容之后写入记录分隔符(通常是换行符)”。所以你需要使用print代替(但puts在每行打印完成后仍然使用移动到新行)

for i in 0...4
  for j in 0...4
      print "#{i}:#{j} "
  end
  puts
end
于 2012-12-21T11:08:54.117 回答
1
matrix = (0..3).to_a.repeated_permutation(2).each_slice(4)
print matrix.map{|row| row.map{|column| column.join(":")}.join(" ")}.join("\n")
于 2012-12-21T11:17:07.887 回答