使用 i 和 k 值迭代 Ruby 上的列表

Iteration over a list on Ruby with i and k values

我在 ruby 中找不到此代码的优雅解决方案。基本上我想做的是用 c++

for (int i=0;i<list.length;i++)
  {for(int k= i+1; k<list.length; k++)
    {cout<< list[i]<<" "<<list[k]}}

但不幸的是,我在 ruby 中找不到一种优雅的方式来做到这一点。有人可以帮我解决这个问题吗?

下面的代码未经测试,但应该可以。

list.each_with_index do |el1, idx|
  list.drop(idx+1).each do |el2|
    print [el1, el2].join(" ")
  end
end

这是将您的 代码精确地逐行翻译为 ruby。

mudasobwa的回答比较直译,但是用dedicated的方式比较地道,Array#combination:

list.combination(2) do |el1, el2|
  puts "#{el1} #{el2}"
end