給定一組數字, 一組有9個數字,將這9個數字填寫到33 的九宮格內;使得橫,豎,斜對角一條線上的三個數字之和相等;如果無解則列印無解;
參考這位老哥的c語言寫法,用python3再實現一遍
# 時間複雜度為 o(n)
def nine(input_list=[1, 2, 3, 4, 5, 6, 7, 8, 9]):
t_array = [[0 for i in range(3)] for j in range(3)] # 生成空陣列 3 * 3
x, y = 0, 1
t_array[x][y] = input_list[0]
k = 1
while k < 9:
x_new = x - 1
y_new = y + 1
if x_new < 0: x_new = 2
if y_new > 2: y_new = 0
if t_array[x_new][y_new] != 0: # 判定該處是否已盡填充值
x_new = x + 1
y_new = y
t_array[x_new][y_new] = input_list[k]
x = x_new
y = y_new
k += 1
row1 = t_array[0][0] + t_array[0][1] + t_array[0][2]
row2 = t_array[1][0] + t_array[1][1] + t_array[1][2]
row3 = t_array[2][0] + t_array[2][1] + t_array[2][2]
col1 = t_array[0][0] + t_array[1][0] + t_array[2][0]
col2 = t_array[0][1] + t_array[1][1] + t_array[2][1]
col3 = t_array[0][2] + t_array[1][2] + t_array[2][2]
dig1 = t_array[0][0] + t_array[1][1] + t_array[2][2]
dig2 = t_array[2][0] + t_array[1][1] + t_array[0][2]
if row1 == row2 and row1 == row3 and row1 == col1 and row1 == col2 and row1 == col3 and row1 == dig1 and row1 == dig2:
print(t_array)
else:
print("無解!!!")
if __name__ == "__main__":
input_list = input("請輸入列表:") # 輸入九個數字
"""輸入格式:1,2,3,4,5,6,7,8,9 """
input_list = sorted([int(i) for i in input_list.split(",")]) # 將輸入轉換為列表並正序排列
nine(input_list=input_list) # 有預設值供測試
Python 一些面試題
1.寫出以下結果 print 1 2 and 2 2 print 1 2 and 2 1 print 1 2 and 2 2 結果 true false false 解 18.xrange和range的區別?答案 這個題的環境應該放在python2.x中,因為python3中將xrange和rang...
一些Python的面試題(一)
1.列表和元組 列表 list 可變型別,建立後可以對錶內元素進行修改 列表表示的順序,通常是同一型別的物件,如 a 1,2,3 元組 tuple 不可變型別,一旦建立就不能進行更改 元組表示結構,可以用來儲存不同型別的元素,如 b 1,2 3,4 注意,雖然元組內不可改變,但是元組內列表可以改變,...
一些面試題
q 您在什麼情況下會用到虛方法?它與介面有什麼不同?a 當在繼承類中想重寫某一方法時會用到虛方法 虛方法是類的成員函式,介面相當於抽象類.q override與過載有什麼區別?a override 就是覆蓋的意思,覆蓋父類的同名方法,而過載則是通過參數列來呼叫方法.q 值型別與引用型別有什麼區別?a...