少なくとも2つの要素の整数配列を指定して、配列のMatrix-Vector(以下で定義)を出力します。
Matrix-Vectorを計算するには、最初nにsize - input配列を回転させて、サイズの行列を作成しますn x n。配列の最初の要素は主対角線に続きます。これにより、マトリックス部分が形成されます。ベクトルの場合、入力配列を垂直に反転します。次に、通常の行列乗算を実行します。出力ベクトルは結果です。
例えば、
a = [1, 2, 3]
まず、配列を右に2回回転して、とを取得[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]or [[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]素敵なトリック