国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用javascript生成回型矩陣/蛇形矩陣

n7then / 3341人閱讀

摘要:回型蛇形矩陣形式上述這種形式即為蛇形矩陣。例如的中間公約數為,所以為三行三列。若為則中間公約數分別是,所以為四行五列。之后在根據行列中比較小的那個來判斷有幾層回字型。源碼在瀏覽器控制臺即可調用函數。

回型/蛇形矩陣形式
1  2  3
8  9  4
7  6  5

上述這種形式即為蛇形矩陣。

原文首先發布于 TinyTin的自留地

解決思路

給定一個數字 n(為最終值例如上述中 9
首先先判斷有幾行幾列,這里只要求出n 的中間公約數。例如 9 的中間公約數為 3 ,所以為三行三列。若 n 為 20 則中間公約數分別是4,5.所以為四行五列。

之后在根據行列中比較小的那個來判斷有幾層“回字型”。例如n=9 時候有三層,n=20 時候也是三層。然后就可以寫個遞歸來把這些數字放進一個二維數組中的合適位置上。

javascript源碼

在瀏覽器控制臺即可調用 Annular 函數。

function Annular(n) {
    n = parseInt(n);
    var divisor = [];
    for (var i = 1; i <= n; i++) {
        if (n % i == 0) {
            divisor.push(i);
        }
    }
    var len = divisor.length;
    if (len % 2 == 0) {
        var mid = len / 2;
        var row = divisor[mid - 1];
        var col = divisor[mid];
    } else {
        var row = divisor[Math.floor(len / 2)];
        var col = row;
    }
    //console.log("行:" + row + "  列:" + col);
    var arr = new Array(row)
    for (var j = 0; j < arr.length; j++) {
        arr[j] = new Array(col)
    }
    var quan = Math.ceil(row / 2);
    var begin = 1;
    var q = 0;
    while (q < quan) {
        var top = col - q * 2;
        for (var i = 0; i < top; i++) {
            arr[q][i + q] = begin + i;
        }
        var right = row - q * 2;
        for (var i = 0; i < right; i++) {
            arr[i + q][col - 1 - q] = begin + top - 1 + i;
        }
        var bottom = col - q * 2;
        for (var i = 0; i < bottom; i++) {
            arr[row - 1 - q][bottom - i - 1 + q] = begin + top - 1 + right - 1 + i;
        }
        var left = row - q * 2 - 1;
        for (var i = 0; i < left; i++) {
            arr[row - 1 - q - i][q] = begin + top - 1 + right - 1 + bottom - 1 + i;
        }
        var stop = begin + top + right + bottom + left - 4;
        begin = stop + 1;
        q++;
    }
    console.log(arr);
}

例子
Annular(25);

//輸出

[ [ 1, 2, 3, 4, 5 ],
  [ 16, 17, 18, 19, 6 ],
  [ 15, 24, 25, 20, 7 ],
  [ 14, 23, 22, 21, 8 ],
  [ 13, 12, 11, 10, 9 ] ]

Annular(25);

//輸出

[ [ 1, 2, 3, 4, 5 ],
  [ 14, 15, 16, 17, 6 ],
  [ 13, 20, 19, 18, 7 ],
  [ 12, 11, 10, 9, 8 ] ]  

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/80300.html

相關文章

  • 賽碼模擬題:蛇形填數 SnakeSquare (Java 8)

    摘要:題目在方陣里填入要求填成蛇形。填數的循環按照走。重點是控制蛇的方向和移動范圍。假設表示行數,表示列數垂直向下,遞增,不變,到達最下方變水平,遞增變為遞減。還有要注意矩陣下標和坐標的區別,原點位置不同,不建議用作為變量名,易混淆。 題目:在nn方陣里填入1,2,...,nn,要求填成蛇形。例如n=4時方陣為: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 ...

    lk20150415 評論0 收藏0
  • WebVR開發教程——深度剖析

    摘要:片元著色器主要處理片元顏色,在這里只是將紋理坐標和紋理對象傳給片元著色器。根據公式分別計算出左右視口的模型視圖投影矩陣,傳給頂點著色器程序,與頂點緩沖區的頂點坐標相乘繪制出最終頂點。 最近WebVR API 1.1已經發布,2.0草案也在擬定中,在我看來,WebVR走向大眾瀏覽器是早晚的事情了,今天本人將對WebVR開發環境和開發流程進行深入介紹。 WebVR與WebVR API 首先...

    Cciradih 評論0 收藏0
  • Tensorflow快餐教程(4) - 矩陣

    摘要:最常用的就是對角陣,只有一條對角線上有值。可以通過函數來獲得逆矩陣,例我們來驗算一下與相乘是不是單位矩陣果然是。對角陣比較特殊,還滿足交換律求行列式的值以判斷是否有逆矩陣我們學習線性代數知道,如果一個矩陣要想有逆矩陣,它的行列式一定不能為。 矩陣 矩陣的初始化 矩陣因為元素更多,所以初始化函數更多了。光靠tf.linspace,tf.range之類的線性生成函數已經不夠用了。 可以通過...

    ad6623 評論0 收藏0

發表評論

0條評論

n7then

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<