Document 7226624

Download Report

Transcript Document 7226624

Nonogram Solver Irvin P. Bustos Buenrostro Department of Computer Science Faculty Advisor: Dr. Russell J. Abbott

College of Engineering, Computer Science, and Technology California State University, Los Angeles

Project Background/Context

Nonogram is a logic game where the main objective is to discover a picture using the hints located on the top and on the side of the board. Nonogram is know with many other different names such as Paint by Numbers, Picross. There are several Nonogram solver, but this solver in particular makes use of constraint program as an approach to solve it By having constraint programming is like having a “black box”, in this case we input the right constraints that satisfy the Nonogram and the “black box” gives the right solution .

Example

Objectives

The main objective of the project is to create a solver using constraint programming (JaCoP), create a user interface where the user can input the hints/rules of the Nonogram and the program should display the answer to that particular Nonogram. The solver should be a tool or aid to a Nonogram player to see if they come out with the right answer in the case is playing on paper.

Solution

Deliverables

Basically the approach taken to make the solver was to make use of constraint programming as the main approach to achieve the goal. I Used the JaCoP library which was helpful to implement several constraints that the Nonogram must follow. I used the regular expressions to make Automatons and then created a model that can interpreter the Nonogram, in this case was basically a matrix where each row and column must satisfy the rules of the Nonogram, then used the Regular Constraint to get the solution by applying it to the model created.

Results

The result of this project is satisfactory since the main goal has been achieved, now we can see that we can solve a Nonogram and see the solution in a graphical way. We can see that JaCoP was able to come out with the right answers. Then we did the transition on converting that particular answer in graphical manner.

Conclusions

This project was a opportunity to reinforce my learning, more specific in areas that need to be research and understand such as automata theory. By understanding constraint programming we can make solutions to problems that require lot of work. We can make use of a different approach such as what are the constraints that need to be satisfied and look a way to implement that constraint to find that solution.