fundo
Sudoku é um enigma número onde, dado um grade dividida em caixas de tamanho , cada número de a devem aparecer exatamente uma vez em cada linha, coluna e caixa.
No jogo de xadrez, o rei pode se mover para qualquer uma das (no máximo) 8 células adjacentes por vez. "Adjacente" aqui significa horizontalmente, vertical ou diagonalmente adjacente.
A turnê do rei é uma analogia da turnê do cavaleiro; é um caminho (possivelmente aberto) que visita todas as células exatamente uma vez no tabuleiro com os movimentos de Chess King.
Tarefa
Considere uma grade de Sudoku de 6 por 6:
654 | 321
123 | 654
----+----
462 | 135
315 | 246
----+----
536 | 412
241 | 563
e uma excursão do rei (de 01
a 36
):
01 02 03 | 34 35 36
31 32 33 | 04 05 06
---------+---------
30 23 28 | 27 26 07
22 29 24 | 25 09 08
---------+---------
21 19 16 | 10 14 13
20 17 18 | 15 11 12
O passeio forma o número de 36 dígitos 654654564463215641325365231214123321
.
Fazer um tour diferente do rei dá números maiores; por exemplo, posso encontrar um caminho que comece com o 65<6>56446556...
que é definitivamente maior que o acima. Você pode alterar o quadro de Sudoku para obter números ainda mais altos:
... | ...
.6. | ...
----+----
..6 | ...
.5. | 6..
----+----
.45 | .6.
6.. | 5..
Este quadro incompleto fornece a sequência inicial da 666655546...
qual é a sequência ideal de 9 dígitos iniciais.
Sua tarefa é encontrar o maior número desse tipo para o Sudoku 9 por 9 padrão com caixas 3 por 3 , ou seja,
... | ... | ...
... | ... | ...
... | ... | ...
----+-----+----
... | ... | ...
... | ... | ...
... | ... | ...
----+-----+----
... | ... | ...
... | ... | ...
... | ... | ...
Observe que esse desafio não é código-golfe ; o foco é encontrar as soluções, em vez de escrever um pequeno programa que, teoricamente, funciona.
Critério de pontuação e vitória
A pontuação de um envio é o número de 81 dígitos encontrado pelo seu programa. A finalização com a pontuação mais alta vence. Seu programa também deve produzir a grade do Sudoku e o tour do rei em forma legível por humanos; inclua-os no seu envio.
Seu programa pode gerar vários resultados; sua pontuação é o máximo deles.
Não há limite de tempo para o seu programa. Se o seu programa continuar em execução e encontrar um número maior depois, você poderá atualizar a pontuação do envio editando a postagem. O desempate é o primeiro momento para obter a pontuação, ou seja, o horário da postagem (se ainda não tiver sido editado) ou o horário da edição em que a pontuação foi atualizada (caso contrário).
fonte
Respostas:
Python + Z3 , 999899898789789787876789658767666545355432471632124566352413452143214125313214321, ideal
É executado em cerca de meia hora, produzindo
Código
fonte