O Sudoku é um jogo de quebra-cabeças criado por Howard Garns. O jogo consiste de uma matriz 9x9 separada em 9 sub-matrizes de tamanho 3x3, chamadas regiões. O objetivo é posicionar números de 1 a 9 de forma que cada coluna, linha e região tenham apenas um número de cada um dos 1 a 9. Para mais detalhes sobre o problema, consultar https://pt.wikipedia.org/wiki/Sudoku. No jogo Sudoku, alguns números são posicionados inicialmente na matriz, e é dever do jogador completar os espaços em branco. A Figura 1 apresenta um exemplo do estado inicial de um jogo de Sudoku e o mesmo resolvido.
Você deve implementar um programa que lê uma matriz inicial de Sudoku e permita ao usuário resolvê-lo. Seu programa deve ser executado seguindo este fluxo:
-
O programa deve solicitar o nome do arquivo texto contendo o estado inicial. O programa deve imprimir a matriz logo em seguida.
-
O usuário deve digitar um comando (ver abaixo) ou um número de três digitos, indicando a linha, coluna e o número a inserir. Exemplo: 117 insere o número “7” na célula (1,1), que corresponde à primeira linha e primeira coluna. O programa deve imprimir a matriz logo após a alteração. Nota: o usuário não pode alterar células que já tem valores.
A qualquer momento o usuário pode digitar um dos seguintes comandos: salvar : para sobrescrever o arquivo contendo o estado inicial com o estado atual do jogo. sair : para encerrar o programa (sem salvar as alterações). Importante: seu programa deve proibir que o usuário faça alocações inválidas. O usuário deve ser alertado com uma mensagem de erro caso digite um valor inválido ou faça uma alocação que infrinja as regras do jogo.
Exemplo de uso do programa (os dados digitados pelo usuário estão destacados em azul):
O arquivo de entrada que será lido pelo usuário contém 81 números inteiros dispostos em 9 linhas, cada um indicando o valor de uma célula da matriz do Sudoku. As células que não estão preenchidas tem valor ‘0’. No exemplo da página anterior, o arquivo final terá a configuração a seguir:
Se estivar no Ubuntu, Debian:
Se estiver no Fedora, CentOS:
Se estiver no Windows é necessário ter suporte para C e C++ instalado em sua máquina. Seguindo esse tutorial é possível completar esse passo: https://terminaldeinformacao.com/2015/10/08/como-instalar-e-configurar-o-gcc-no-windows-mingw/
A linha de comando que compila é:
A linha de comando que executa em Ubuntu, Linux, Debian, e outros:
A linha de comando que executa em Windows: