添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Day 11: 2D Arrays (陣列)

輸入一個 6*6 數字的陣列A,每個數字間都有用 一個空格隔開 ,A可以拆解成16個沙漏(hourglass)子集合,由7個數字組合,如下:
a b c
e f g
輸出16個沙漏中7個數字總和 最大值

1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 0 2 4 4 0
0 0 0 2 0 0
0 0 1 2 4 0

其中最大值(19)為下列沙漏:
2 4 4
1 2 4

arr = []
for _ in range(6): #歷遍6次(因共6行)
    arr.append(list(map(int, input().split()))) #將陣列儲存到arr
        #將每行以空格隔開的數字轉換為整數,因為map返回迭代器,須再轉為列表
        #以樣本為例,此時arr = [[1, 1, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0], [0, 0, 2, 4, 4, 0], [0, 0, 0, 2, 0, 0], [0, 0, 1, 2, 4, 0]]
a = []
for i in range(0,4): #歷遍arr第0-4個元素
    for j in range(0,4): #歷遍arr第0-4個元素的第0-4個數字
        b = arr[i][j] + arr[i][j+1] + arr[i][j+2] + arr[i+1][j+1] + arr[i+2][j] + arr[i+2][j+1] + arr[i+2][j+2]
        a += [b] #將每個沙漏的總和儲存到a,共16個
print(max(a)) #印出沙漏總和的最大值
0 9 4 5 6 4
4 5 6 8 7 2
1 0 4 6 2 7
6 5 4 2 1 0
6 8 9 5 3 3
3 5 6 8 4 2
for i in range(0,4): #歷遍arr第0-4個元素
for j in range(0,4): #歷遍arr第0-4個元素的第0-4個數字
b = arr[i][j] + arr[i][j+1] + arr[i][j+2] + arr[i+1][j+1] + arr[i+2][j] + arr[i+2][j+1] + arr[i+2][j+2]
a += [b] #將每個沙漏的總和儲存到a,共16個

以例子而言

[[1, 1, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0], [0, 0, 2, 4, 4, 0], [0, 0, 0, 2, 0, 0], [0, 0, 1, 2, 4, 0]]

b=arr[i][j] + arr[i][j+1] + arr[i][j+2] + arr[i+1][j+1] + arr[i+2][j] + arr[i+2][j+1] + arr[i+2][j+2]

是為了達成這樣的結果?
1 1 1 1 1 0 1 0 0 0 0 0
1 0 0 0
1 1 1 1 1 0 1 0 0 0 0 0

0 1 0 1 0 0 0 0 0 0 0 0
1 1 0 0
0 0 2 0 2 4 2 4 4 4 4 0

1 1 1 1 1 0 1 0 0 0 0 0
0 2 4 4
0 0 0 0 0 2 0 2 0 2 0 0

0 0 2 0 2 4 2 4 4 4 4 0
0 0 2 0
0 0 1 0 1 2 1 2 4 2 4 0

還是純粹每個行加總得最大

for i in range(0,4): #歷遍arr第0-4個元素 for j in range(0,4): #歷遍arr第0-4個元素的第0-4個數字 b = arr[i][j] + arr[i][j+1] + arr[i][j+2] + arr[i+1][j+1] + arr[i+2][j] + arr[i+2][j+1] + arr[i+2][j+2] a += [b] #將每個沙漏的總和儲存到a,共16個 以例子而言 [[1, 1, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0], [0, 0, 2, 4, 4, 0], [0, 0, 0, 2, 0, 0], [0, 0, 1, 2, 4, 0]] b=arr[i][j] + arr[i][j+1] + arr[i][j+2] + arr[i+1][j+1] + arr[i+2][j] + arr[i+2][j+1] + arr[i+2][j+2] 是為了達成這樣的結果? 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 2 4 2 4 4 4 4 0 1 1 1 1 1 0 1 0 0 0 0 0 0 2 4 4 0 0 0 0 0 2 0 2 0 2 0 0 0 0 2 0 2 4 2 4 4 4 4 0 0 0 2 0 0 0 1 0 1 2 1 2 4 2 4 0 還是純粹每個行加總得最大