Учитывая целочисленный массив по крайней мере из двух элементов, выведите Matrix-Vector (определенный ниже) массива.
Чтобы вычислить Matrix-Vector , сначала поверните массив n
ввода размера, чтобы создать матрицу размера.n x n
, , причем первый элемент массива следует за главной диагональю. Это формирует матричную часть. Для вектора переверните входной массив по вертикали. Затем выполните нормальное матричное умножение. Выходной вектор является результатом.
Например,
a = [1, 2, 3]
Сначала поверните массив два раза вправо, чтобы получить, [3, 1, 2]
а [2, 3, 1]
затем сложите их, чтобы сформировать 3x3
матрицу
[[1, 2, 3]
[3, 1, 2]
[2, 3, 1]]
Затем переверните массив вертикально, чтобы сформировать вектор
[[1, 2, 3] [[1]
[3, 1, 2] x [2]
[2, 3, 1]] [3]]
Выполнить обычное матричное умножение
[[1, 2, 3] [[1] [[1+4+9] [[14]
[3, 1, 2] x [2] = [3+2+6] = [11]
[2, 3, 1]] [3]] [2+6+3]] [11]]
И вывод - [14, 11, 11]
или [[14], [11], [11]]
(на ваш выбор, является ли он плоским или нет).
Пример № 2
a = [2, 5, 8, 3]
[[2, 5, 8, 3] [[2] [[4+25+64+9] [[102]
[3, 2, 5, 8] x [5] = [6+10+40+24] = [80]
[8, 3, 2, 5] [8] [16+15+16+15] [62]
[5, 8, 3, 2]] [3]] [10+40+24+6]] [80]]
[102, 80, 62, 80]
правила
- Можно предположить, что ввод и вывод соответствуют целочисленному типу вашего языка.
- Вход и выход могут быть предоставлены в любом удобном формате .
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Если возможно, укажите ссылку на среду онлайн-тестирования, чтобы другие люди могли опробовать ваш код!
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
(v*2)[i+j]
хороший трюк