Eu quero gerar um Sudoku completamente aleatório .
Defina uma grade Sudoku como uma grade de números inteiros entre 1 e 9, onde alguns elementos podem ser omitidos. Uma grade é um quebra-cabeça válido se houver uma maneira única de completá-la para corresponder às restrições do Sudoku (cada linha, coluna e quadrado 3 × 3 alinhado não tem elemento repetido) e é mínima nesse sentido (ou seja, se você omitir mais elemento do quebra-cabeça tem várias soluções).
Como posso gerar um quebra-cabeça aleatório do Sudoku, de modo que todos os quebra-cabeças do Sudoku sejam equivalentes?
algorithms
randomness
sudoku
Justin
fonte
fonte
Respostas:
Gerando o exato distribuição uniforme de todos os quebra-cabeças do sudoku pode ser feita dessa maneira: você pode gerar aleatoriamente uma grade 9x9 e mantê-la apenas se for uma grade correta do sudoku; caso contrário, tente novamente.
Talvez você veja onde eu estou indo: responder a esse problema de uma maneira inteligente provavelmente o levará a pensar sobre as simetrias subjacentes das grades do sudoku. Muito trabalho foi feito nessa direção para provar o fato de que 17 é o número mínimo de pistas para um sudoku ( consulte este artigo ) e você pode ir aqui para ver esta enumeração precisa de 5.472.730.538 classes de 3.359.232 grades semelhantes, que as utiliza simetrias:
EDIT: para adaptar isso a quebra-cabeças incompletos, você pode escolher aleatoriamente um subconjunto de sua grade, verificar se a solução é exclusiva com um solucionador de sudoku e tentar novamente, se não. Esta não é uma distribuição uniforme, pois o número de quebra-cabeças incompletos com uma solução única pode ser diferente para duas grades. (Eu ficaria muito surpreso caso contrário)
fonte