Вопрос, по сути, заключается в том, «как объединить массивы в Ruby». Естественно, ответом является использование concat
или +
, как упоминалось почти в каждом ответе.
Естественным продолжением вопроса будет «как выполнить построчную конкатенацию 2D-массивов в Ruby». Когда я погуглил «матрицы конкатенации рубина», этот ТА-вопрос стал лучшим результатом, поэтому я решил оставить свой ответ на этот (не заданный, но связанный) вопрос здесь для потомков.
В некоторых приложениях может потребоваться «объединить» два 2D-массива по строкам. Что-то вроде
[[a, b], | [[x], [[a, b, x],
[c, d]] | [y]] => [c, d, y]]
Это что-то вроде «увеличения» матрицы. Например, я использовал эту технику, чтобы создать одну матрицу смежности для представления графа из множества меньших матриц. Без этой техники мне пришлось бы перебирать компоненты таким образом, чтобы это могло привести к ошибкам или разочарованию. Я мог бы, например, сделать each_with_index
. Вместо этого я объединил zip и flatten следующим образом
# given two multi-dimensional arrays that you want to concatenate row-wise
m1 = [[:a, :b], [:c, :d]]
m2 = [[:x], [:y]]
m1m2 = m1.zip(m2).map(&:flatten)
# => [[:a, :b, :x], [:c, :d, :y]]