Я хотел бы заполнить двумерный массив из вектора.
Я думаю, что лучший способ объяснить себя - это привести несколько примеров (с массивом длиной [3,5]).
Когда вектор: [1, 0]
[
[4, 3, 2, 1, 0],
[4, 3, 2, 1, 0],
[4, 3, 2, 1, 0]
]
Когда вектор: [- 1, 0]
[
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]
]
Когда вектор: [- 2, 0]
[
[0, 0, 1, 1, 2],
[0, 0, 1, 1, 2],
[0, 0, 1, 1, 2]
]
Когда вектор: [1, 1]
[
[2, 2, 2, 1, 0],
[1, 1, 1, 1, 0],
[0, 0, 0, 0, 0]
]
Когда вектор: [0, 1]
[
[2, 2, 2, 2, 2],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0]
]
У вас есть какие-нибудь идеи, хорошая библиотека или план?
Любые комментарии приветствуются. Спасибо.
Примечание: я консультировался с классами Ruby "Matrix" и "Vector", но я не вижу способа использовать его по-своему ...
Редактировать: Фактически, каждое значение - это количество ячеек (от текущей ячейки до последней ячейки) в соответствии с данным вектором.
Если мы возьмем пример, где вектор [-2, 0], со значением * 1 * (в массиве [2, 3]):
array = [
[<0>, <0>, <1>, <1>, <2>],
[<0>, <0>, <1>, <1>, <2>],
[<0>, <0>, <1>, *1*, <2>]
]
... мы могли бы подумать, например:
Вектор [-2, 0] означает, что -2
для столбцов и 0 для строк. Так что если мы
находятся в массиве [2, 3], мы можем двигаться 1 раз
слева (слева, потому что 2
отрицательный) с 2 длиной (потому что
-2.abs == 2). И мы не движемся сверху или снизу, потому что 0 для
строки.