My inspiration for this was a mix of my love to the picross puzzles as well as AI. I like the idea of using boolean logic to make a computer do something pretty complex.

What it does

Given the dimensions and the numbers in the rows and columns of a picross puzzle, this program will display the picture it should form.

How I built it

I built it by compiling the possible configurations of the puzzle given the column numbers into a 3-D matrix. From there, in the 5 by 5, I also compiled the possible configurations given the row number then compared each page until each value was the same. For the 10 by 10, I checked the numbers on each row and compared it to the given row numbers. This was faster since it didn't require the generation of a large matrix.

Challenges I ran into

I ran into a big challenge trying to figure out an algorithm that would work given any row or column number that has 2 elements. The algorithm was not very self-explanatory and was a function of multiple variables and required nested for loops. I also couldn't find a correlation between the number of possible solutions in a given number set because it varied based on length and sum.

Accomplishments that I'm proud of

I am very proud of the project as a whole, but specifically for the algorithm that will generate the possible configurations of a number set of 2. I am proud of this because I didn't realize it until after, but it works for any number of dimension, not just 5 by 5. So I could use it for 10 by 10 or even 15 by 15.

What I learned

I learned that even a puzzle that may seem very self-explanatory to a human, can be a very complicated algorithm to a computer.

What's next for Nonogram/Picross Solver

Next I want to hopefully rewrite the program in Java once I learn Java better, and develop a more efficient algorithm so that I may be able to solve more complicated 10 by 10 puzzles or even a 15 by 15.

Built With

Share this project: