将数组中的所有零替换为另一个数组的元素

时间:2016-07-08 20:20:19

标签: ruby algorithm sorting sudoku

说我有这样的阵列:

array_2 = [4, 5, 6]

和另一个像这样:

array_1

如何创建这样的数组,以便array_2中的每个0都被[4, 5, 1, 2, 3, 6]的第一个和后续元素替换?:

0

也就是说,每次我们在第一个数组中遇到array_2.shift时,我们都希望将其替换为{{1}}的结果。

2 个答案:

答案 0 :(得分:5)

这个更短但 shift 方法会在原地修改array_2。

array_1.map {|x| x == 0 ? array_2.shift : x}

以下使用具有外部迭代的枚举器对象,不会修改任何原始数组。

e = array_2.each
array_1.map {|x| x == 0 ? e.next : x}

答案 1 :(得分:1)

你可以做这样的事情,当遇到0

时迭代和转移
array_1.each_with_index do |val, i|
  array_1[i] = array_2.shift if val == 0
end