[英]How can I refactor this line of code:
我正在編寫一個程序來檢查數獨是否已解決。 這是我想不到的一種重構方式:
for i in range(0, 9):
for j in range(0, 9):
if i < 3:
if j < 3:
one.append(sudoku[i][j])
if j >= 3 and j < 6:
two.append(sudoku[i][j])
if j >= 6:
three.append(sudoku[i][j])
if i >= 3 and i < 6:
if j < 3:
four.append(sudoku[i][j])
if j >= 3 and j < 6:
five.append(sudoku[i][j])
if j >= 6:
six.append(sudoku[i][j])
if i >= 6:
if j < 3:
seven.append(sudoku[i][j])
if i >= 6 and j >= 3 and j < 6:
eight.append(sudoku[i][j])
if j >= 6:
nine.append(sudoku[i][j])
謝謝!
嘗試使用2D數組保存對象並按以下方式映射它們:
mapping = [[one, two, three], [four, five, six], [seven, eight, nine]]
for i in range(0, 9):
for j in range(0, 9):
square = mapping[i/3][j/3]
square.append(sudoku[i][j])
如果您使用的是Python 3,則可以將square = mapping[i/3][j/3]
替換為square = mapping[int(i/3)][int(j/3)]
或square = mapping[i//3][j//3]
如Padraic所指出
這樣做的原因是Python2將舍入並返回一個用於除法的int
,而Python3將返回一個float
。 強制轉換為int
將舍入。
將所有的one
, two
,等等塊放置在數組中。 然后根據i
和j
選擇數組中的正確塊。 基本上,您需要此索引:
index = (i / 3) * 3 + j / 3
在哪里進行整數除法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.