Ex. 06 - Sudoku
Escreva um programa chamado Sudoku.java que resolve o Sudoku.
Seu programa deve receber um arquivo de texto com a configuração inicial. O formato de entrada de seu programa é exemplificado nos arquivos in0.txt, in1.txt, etc dados abaixo. Seu programa deve ter dois modos de execução.
No primeiro modo de execução, seu programa deve imprimir todas as possíveis soluções daquela instância. Seu programa deve também dizer quantas soluções existem. Quando nenhum argumento é dado na linha de comando, seu programa deve operar neste modo.
No segundo modo de execução, seu programa deve apenas imprimir quantas soluções existem para a instância dada. Quando o usuário der algum argumento na linha de comando, seu programa deve operar neste segundo modo.
Caso a instância dada contenha um erro, como, por exemplo, um mesmo número aparecendo na mesma linha, seu programa deve imprimir a mensagem "Invalid instance".
Exemplos de execução. Seu programa deve comportar-se como ilustrado abaixo, onde os arquivos para entrada estão disponíveis para download abaixo.
$ java-introcs Sudoku < in0.txt
7 2 8 9 4 6 3 1 5
9 3 4 2 5 1 6 7 8
5 1 6 7 3 8 2 4 9
1 4 7 5 9 3 8 2 6
3 6 9 4 8 2 1 5 7
8 5 2 1 6 7 4 9 3
2 9 3 6 1 5 7 8 4
4 8 1 3 7 9 5 6 2
6 7 5 8 2 4 9 3 1
1 solution(s)
$ java-introcs Sudoku . < in1.txt
1 solution(s)
$ java-introcs Sudoku . < in2.txt
10 solution(s)
$ java-introcs Sudoku < in2.txt > in2.out
$ cat in2.out | head -n15
7 3 8 2 6 1 9 4 5
6 2 4 9 5 3 7 1 8
9 5 1 7 4 8 3 2 6
5 1 9 6 8 4 2 3 7
2 6 3 1 9 7 5 8 4
8 4 7 5 3 2 6 9 1
3 8 2 4 7 5 1 6 9
4 9 5 3 1 6 8 7 2
1 7 6 8 2 9 4 5 3
8 3 9 2 6 1 4 7 5
6 2 4 7 5 3 8 1 9
5 7 1 9 4 8 3 2 6
2 5 8 6 9 4 1 3 7
9 6 3 1 8 7 5 4 2
$ java-introcs Sudoku . < in3.txt
Invalid instance
$ java-introcs Sudoku . < in4.txt
1 solution(s)
$ java-introcs Sudoku . < in5.txt
31834 solution(s)
$