GithubHelp home page GithubHelp logo

daniloaleixo / sudoku_solver_with_sat Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 209 KB

Projeto realizado para matéria de Métodos Formais - O programa deve receber um arquivo de entrada que represente a situação inicial de um jogo de sudoku e, à partir dele, gerar uma fórmula lógica para servir de entrada ao programa "zchaff", resolvedor SAT

Makefile 4.38% C 95.62%
university university-project sat sat-solver sudoku formal-methods c

sudoku_solver_with_sat's Introduction

Sudoku solver with SAT

Introdução

Esse programa é um exercício da disciplina de Métodos Formais em Programação, presidida pelo Prof. Dr. Marcelo Finger, do curso de Bacharelado em Ciência da Computação do Instituto de Matemática e Estatística da Universidade de São Paulo (IME-USP).

OBJETIVO

O programa final deve receber um arquivo de entrada que represente a situação inicial de um jogo de sudoku e, à partir dele, gerar uma fórmula (no formato adequado) para servir de entrada ao programa "zchaff", resolvedor SAT, que responderá se a fórmula for satisfazível e retornará uma possível solução.

COMPILAÇÃO

Para compilar o programa basta usar o comando 'make' no diretório onde se encontra- um arquivo Makefile

make

ENTRADA

A entrada é um arquivo simples que contém todos os números presentes na grade do sudoku e os espaços em branco preenchidos com 0

LÓGICA

O principal desafio desse exercício-programa foi construir uma fórmula que modelasse devidamente o problema do sudoku. Sabemos das regras do jogo e casos que precisamos isolar para garantir que a variável foi colocada no lugar certo, por exemplo, não podemos ter nenhuma variável igual em uma mesma linha, coluna ou quadrado. Primeiramente pensamos em um caso onde 3 variáveis só poderiam ter uma validação satisfazível, que seria onde somente uma das variáveis fosse verdade. Pela tabela da verdade chegamos em uma fórmula que em seguida foi expandida para 9 variáveis, desse jeito para 9 variáveis tinhamos uma fórmula que só era verdade quando somente uma das variáveis era verdade. Com esta formula precisamos verificar que dentro de um espaço da matriz gerado pelo sudoku, só existe uma variavel de 1 a 9 valida. Alem disso precisamos verificar para as linhas se só existe uma variavel d que satisfaça esta linha, ou seja verificar que d nao é repetida, sendo d entre 1 e 9, assim verificamos para todas as variáveis de 1 a 9 para as linhas, assim como para as colunas e quadrados. Por fim como os numeros que vêm da entrada implicam em atomos que serão sempre verdade, adicionamos a essa fórmula essas clausulas que sempre serão verdade.

sudoku_solver_with_sat's People

Contributors

daniloaleixo avatar

Stargazers

Giovanni Rosa avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.