[JS]Sprial Matrix
えーと、、、、ユデミの授業で解いた問題は、問題の名前はよくわかりませんが、スピアールMatrixにします.
)
--- Directions
Write a function that accepts an integer N
and returns a NxN spiral matrix.
--- Examples
matrix(2)
[[1, 2],
[4, 3]]
matrix(3)
[[1, 2, 3],
[8, 9, 4],
[7, 6, 5]]
matrix(4)
[[1, 2, 3, 4],
[12, 13, 14, 5],
[11, 16, 15, 6],
[10, 9, 8, 7]]
このように回転する2 Dアレイを作るのが狙い!
Spiral Matrix
My Code
2 Dアレイを宣言する方法
row : a
column: b
MDN fromメソッド
start column、endcolumn、start row、endrowを使用して、末尾に4行を入力します.
javascriptは空の配列に直接入れることができるので、初期化せずに空の配列のみを宣言します.
先頭行を塗りつぶします.for i
1行目は記入済みです
endColumn充填--i
最後の行に記入しました.
下の行を塗りつぶします.for i
一番下の行が埋め込まれています.
一番左の行を塗りつぶします.for i
一番左が Column<=endColumn&&startRow<=endRowを起動
または
カウンタ<=n*nでよい.
アルゴリズムベースsprial終了~~
ソース:レッスンリンク
)
--- Directions
Write a function that accepts an integer N
and returns a NxN spiral matrix.
--- Examples
matrix(2)
[[1, 2],
[4, 3]]
matrix(3)
[[1, 2, 3],
[8, 9, 4],
[7, 6, 5]]
matrix(4)
[[1, 2, 3, 4],
[12, 13, 14, 5],
[11, 16, 15, 6],
[10, 9, 8, 7]]
このように回転する2 Dアレイを作るのが狙い!
Spiral Matrix
My Code
function matrix(n) {
let results = Array.from(Array(n), () => new Array(n));
let counter = 1;
let startColumn = 0,
startRow = 0,
endColumn = n - 1,
endRow = n - 1;
// startColumn <= endColumn && startRow <= endRow
while (counter <= n * n) {
for (let i = startColumn; i <= endColumn; i++) {
results[startRow][i] = counter;
counter++;
}
startRow++;
for (let i = startRow; i <= endRow; i++) {
results[i][endColumn] = counter;
counter++;
}
endColumn--;
for (let i = endColumn; i >= startColumn; i--) {
results[endRow][i] = counter;
counter++;
}
endRow--;
for (let i = endRow; i >= startRow; i--) {
results[i][startColumn] = counter;
counter++;
}
startColumn++;
}
return results;
}
説明:2 Dアレイを宣言する方法
row : a
column: b
let results = Array.from(Array(a), () => new Array(b));
for文を使用して宣言することができるが、es 6ではfrom
メソッドを使用して宣言することができる.MDN fromメソッド
javascriptは空の配列に直接入れることができるので、初期化せずに空の配列のみを宣言します.
先頭行を塗りつぶします.for i
startColumn
~endColumn
result[startRow][i]
counter
を入れるcounter++
1行目は記入済みです
startRow++
endColumn充填--i
startRow
からendRow
に使用result[i][endColumn]
counter
を入れるcounter++
最後の行に記入しました.
endColumn--
です.下の行を塗りつぶします.for i
endColumn
~startColumn
result[endRow][i]
counter
を入れるcounter++
一番下の行が埋め込まれています.
endRow--
です.一番左の行を塗りつぶします.for i
endRow
~startRow
result[i][startColumn]
counter
を入れるcounter++
一番左が
startRow++
または
カウンタ<=n*nでよい.
アルゴリズムベースsprial終了~~
ソース:レッスンリンク
Reference
この問題について([JS]Sprial Matrix), 我々は、より多くの情報をここで見つけました https://velog.io/@proshy/Sprial-Matrixテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol