defaultdict и chain наше фсе :)
from collections import defaultdict
from itertools import chain
def valid_solution(board):
blocks = defaultdict(list)
for y in range(9):
for x in range(9):
blocks[y//3, x//3].append(board[y][x])
return all(len(set(i)-{0}) == 9 for i in chain(board, zip(*board), blocks.values()))
так вот же
Igor
Vyacheslav
Vladislav
Денис
Дима
Bot 554
Oleg
Виталик Голоенко
Ankh
Maxim
Михаил
Алексей
Oleg
Bogdan
Bola
Dmitriy (Дима)
Алексей
Борисов