如何以第一个计数器永远不等于第二个的方式在一个数组上执行嵌套循环
How to perform a nested loop on one array in such a way that the first counter is never equal to the second
如何像这样遍历同一个数组两次
array.each do |k|
array.each do |l|
end
end
这样 k 永远不会等于 l
我认为最好的方法是让它成为一个循环:
(array.product(array) - array.zip(array)).each do |(k, l)|
...
end
两种不太优雅的方法:
array.each do |k|
(array - [k]).each do |l|
...
end
end
或
array.each do |k|
array.each do |l|
next if k == l
...
end
end
前提是数组的元素是唯一的:
array.permutation(2) do |k,l|
end
如何像这样遍历同一个数组两次
array.each do |k|
array.each do |l|
end
end
这样 k 永远不会等于 l
我认为最好的方法是让它成为一个循环:
(array.product(array) - array.zip(array)).each do |(k, l)|
...
end
两种不太优雅的方法:
array.each do |k|
(array - [k]).each do |l|
...
end
end
或
array.each do |k|
array.each do |l|
next if k == l
...
end
end
前提是数组的元素是唯一的:
array.permutation(2) do |k,l|
end