【发布时间】:2017-01-22 04:55:39
【问题描述】:
我在理解 Ruby 中某些代码的行为时遇到了一些麻烦。我想将我的二维数组的内容与特定的一维数组匹配。
s = [1,2,3].repeated_permutation(2).to_a
solution = [3,1]
s.each do |x|
if x != solution
puts s.length
print "#{x}\n"
s.delete(x)
end
end
我不明白的是这段代码会返回这个:
s = [[1, 2], [2, 1], [2, 3], [3, 1], [3, 3]]
我是一个初学者,我必须忽略一些基本的东西。 我确实通过以一种肯定不理想的方式绕过它来克服这个问题:
s = [1,2,3].repeated_permutation(2).to_a
solution = [3,1]
s.each_with_index do |x,idx|
if x != solution
s[idx] = nil
end
end
=> [nil,nil,nil,nil,nil,nil,nil,[3,1],nil]
s.flatten!.compact!
=> [3,1]
谁能告诉我执行此检查的最佳 Ruby 方法是什么? 提前致谢
【问题讨论】:
-
each正在从s中删除元素,从原来的 9 个元素中删除 4 个元素,留下长度为 5 的s。
标签: arrays ruby multidimensional-array