Итак, я пытаюсь создать функцию, которая будет принимать список списков, каждый из которых состоит из 9 целых чисел, пронумерованных от 1 до 9, и возвращать логическое значение, если это допустимое решение для судоку. Прямо сейчас мне удалось решить часть проблемы с проверкой строк и столбцов, но я застрял на реализации проверки полей три на три. Вот мой код до сих пор.
alist = [1,2,3,4,5,6,7,8,9]
def checkSudoku(grid):
a = grid
b = grid
c = grid
d = False
e = False
f = False
newlist = []
for i in a:
i.sort()
if i == alist:
d = True
else:
d = False
break
for j in range(9):
for k in b:
newlist.append(k)
newlist.sort()
if i == alist:
e = True
newlist = []
else:
e = False
break
if d == True and e == True:
return True
else:
return False
По сути, My должен был проверить все три фактора, необходимые для того, чтобы это было правдой, затем вернуть True, если все три верны, иначе вернуть false. Любая помощь?
a
поf
, не покопавшись в куче кода. Если бы у них были осмысленные имена, я мог бы сразу увидеть проблемы. Однобуквенные имена переменных часто плохи, за исключением очень ограниченных ситуаций (i
иj
часто являются традиционными индексными переменными в циклах, аx
,y
иz
имеют давнюю математическую традицию в качестве имен координат и т. д.). - person Blckknght   schedule 22.04.2014False
, вы можете просто вернутьFalse
. Вам также может быть интересно взглянуть на классset
. - person U2EF1   schedule 22.04.2014