用python寫乙個蛇形矩陣

2021-08-20 08:10:08 字數 1380 閱讀 6680

蛇形矩陣,如:

10 11 12  1

9 16 13 2

8 15 14 3

7 6 5 4

從右上角大回環,其實挺簡單,思路想明白了就順了。

這樣的矩陣可以看做二維陣列,python對陣列的寫法很麻煩,用numpy生成就簡單多了

myarray = np.zeros((n, n), dtype=np.int16)
有了陣列矩陣,接著分析規律,從右上角開始為1,依次向下迴圈,所以就是行+1,列不變;當行到最下面時,迴圈變為列-1,行不變,依次後面是行-1,列不變,最後列+1,行不變,完成一圈大迴圈。

根據這樣的規律,再依次在內部進行小迴圈,直到所有位置的資料都不為0,就算完成。

# 為什麼是不為0,因為我在初始化矩陣的時候用的zeros函式,給每乙個位置都賦的初值0。

# -*- coding: utf-8 -*-

"""created on mon may 28 13:37:32 2018

@author: jeremyjone

"""import pprint

import numpy as np

def main():

n = int(input('請輸入數字:'))

myarray = np.zeros((n, n), dtype=np.int16)

x, y = 0, n - 1

res = myarray[x][y] = 1

while(res < n * n):

while(x + 1 < n and (not myarray[x + 1][y])):

res += 1

x += 1

myarray[x][y] = res

while(y - 1 >= 0 and not myarray[x][y - 1]):

res += 1

y -= 1

myarray[x][y] = res

while(x - 1 >= 0 and not myarray[x - 1][y]):

res += 1

x -= 1

myarray[x][y] = res

while(y + 1 < n and not myarray[x][y + 1]):

res += 1

y += 1

myarray[x][y] = res

pprint.pprint(myarray)

print(myarray)

if __name__ == '__main__':

main()

pprint和print差不多,略有差別,有興趣的自己體會吧。

用python寫乙個restful API

coding utf 8 package.module python實現的圖書的乙個restful api.restful api 一般模式 get select 從伺服器取出資源 一項或多項 post create 在伺服器新建乙個資源。put update 在伺服器更新資源 客戶端提供改變後的完...

乙個用GPU寫的矩陣乘法

這個過程相當繁瑣,個人認為有優化的可能 先說一下思路,矩陣相乘a矩陣乘b矩陣相當於a矩陣和b矩陣的轉置做內積.所以我就先把b矩陣做了轉置,再做內積.其中有兩個核函式是在主函式中執行的,先執行轉置,再執行乘法.再乘法函式中又巢狀了乙個內積函式.這樣充分的利用了並行化.如圖所示 以3 3矩陣為例.我先開...

python寫乙個服務 Python寫乙個服務

coding utf 8 import json from urllib.parse import parse qs from wsgiref.server import make server 定義函式,引數是函式的兩個引數,都是python本身定義的,預設就行了。定義檔案請求的型別和當前請求成功...