import numpy as np
def data_verify(source):
rows = [x.strip().split(' ') for x in open(source)]
columns = zip(*rows)
blocks = np.array(rows).reshape((3,3,3,3)).transpose((0,2,1,3)).reshape((9,9))
#check iff, see further
return rows, columns, blocks
else:
return False
Получил судоку сетки в формате TXT, как, например:Если и только если все указанные условия
3 2 7 4 8 1 6 5 9
1 8 9 3 6 5 7 2 4
6 5 4 2 7 9 8 1 3
7 9 8 1 3 2 5 4 6
5 6 3 9 4 7 2 8 1
2 4 1 6 5 8 3 9 7
8 1 2 7 9 3 4 6 5
4 7 5 8 1 6 9 3 2
9 3 6 5 2 4 1 7 8
Функция собирает все необходимые данные и возвращает соответствующие строки, столбцы и блоки тогда и только тогда длина строк - это то же самое, что и столбцы »(получил несколько других функций, которые определяют, является ли головоломка законной). Я решил, что достаточно сравнить первую строку со всеми столбцами (или наоборот, не имеет значения). Как я могу создать чек, который идет что-то вроде:
for i in range(len(rows)):
if len(row[0]) == len(column[i]):
#do something only if all of the lengths check out
Спасибо, знал, что это было что-то просто, слишком просто :(Я чувствую себя так глупо: D –
Обратите внимание, что если это 'np.array' вы тестируете за то, квадрат, ты мог просто используйте 'len (set (a.shape)) == 1'. –