Nonogram Solver Cs491b Software Design Prepared by :

Slides:



Advertisements
Similar presentations
BSc Honours Project Introduction CSY4010
Advertisements

Noadswood Science,  To know how to use Python to produce windows and colours along with specified co-ordinates Sunday, April 12, 2015.
Maayan Zehavi. Pic-a-pix is a paint by number logic puzzle, in which cells in a grid must be colored or left blank according to numbers at the side of.
Possible user modes and options for LEGUP Presented in decreasingly sane order by Ben Blotcky.
ABSTRACT The goal of this project was to create a more realistic and interactive appliance interface for a Usability Science class here at Union. Usability.
What I Learned In CIS 101! By, Billy Johns. Excel is a GREAT program to create spreadsheets!!! I learned how to create cells, edit cells, and entering.
Paint-By-Numbers Puzzle Chanwit Suebsureekul CS491A Winter 2006 Chanwit Suebsureekul CS491A Winter 2006.
Bug Session Two. Session description In this session the use of algorithms is reinforced to help pupils plan out what they will need to program on their.
Science Inquiry Minds-on Hands-on.
1 L07SoftwareDevelopmentMethod.pptCMSC 104, Version 8/06 Software Development Method Topics l Software Development Life Cycle Reading l Section 1.4 – 1.5.
Chapter 7 Designing Classes. Class Design When we are developing a piece of software, we want to design the software We don’t want to just sit down and.
Unit 1 – Improving Productivity By Jack Hartree. 1.1Why did you use a computer? What other systems / resources could you have used? I used a computer.
CS426 Game Programming II Dan Fleck. Why games?  While the ideas in this course are demonstrated programming games, they are useful in all parts of computer.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Unit 1 – Improving Productivity Ryan Taroni Instructions ~ 100 words per box.
Program Design CMSC 201. Motivation We’ve talked a lot about certain ‘good habits’ we’d like you guys to get in while writing code. There are two main.
Game Interface Design by Brent Fox
Sudoku Hands-on Training Masters Project Presentation Yiqi Gao March 19, 2014.
Se Over the past decade, there has been an increased interest in providing new environments for teaching children about computer programming. This has.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
System Development Life Cycle. The Cycle When creating software, hardware, or any kind of product you will go through several stages, we define these.
The Initial Problem Chapter 1, Section 1.6 #71 x = 793 x needs to be isolated on the left. Therefore, 341 should be subtracted from both sides: x.
Unit 1 – Improving Productivity Instructions ~ 100 words per box.
BSc Honours Project Introduction CSY4010 Amir Minai Module Leader.
5.3 Geometric Introduction to the Simplex Method The geometric method of the previous section is limited in that it is only useful for problems involving.
Problem Solving Techniques. Compiler n Is a computer program whose purpose is to take a description of a desired program coded in a programming language.
CMSC 1041 Algorithms II Software Development Life-Cycle.
Making Decisions uCode: October Review What are the differences between: o BlueJ o Java Computer objects represent some thing or idea in the real.
Unit 1 – Improving Productivity
Unit 1 – Improving Productivity Instructions ~ 100 words per box.
Grade Book Database Presentation Jeanne Winstead CINS 137.
The Software Development Process
BSc Honours Project Introduction CSY4010 Amir Minai Module Leader.
Solution of. Linear Differential Equations The first special case of first order differential equations that we will look is the linear first order differential.
Our project main purpose is to develop a tool for a combinatorial game researcher. Given a version of combinatorial puzzle game and few more parameters,
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
11 Computers, C#, XNA, and You Session 1.1. Session Overview  Find out what computers are all about ...and what makes a great programmer  Discover.
(2x – 1) (3x + 2). (2x – 1) (3x + 2) (2x – 1) (3x + 2)
Linear Growing Patterns and Relations: A Sneak Preview Grade Wendy Telford Grade Wendy Telford.
BSc Honours Project Introduction CSY4010 Amir Minai Module Leader.
CPSC 121: Models of Computation REVIEW. Course Learning Outcomes You should be able to: – model important problems so that they are easier to discuss,
By: Cameron R and Ryan. Pros and cons Pros Cons Movement: It was easy to move the character around and to tell it where to go. Background: It was easy.
FOP: Multi-Screen Apps
By Melissa Dalis Professor Susan Rodger Duke University June 2011
The Need for Algorithms
Hand Gestures Based Applications
AP CSP: Cleaning Data & Creating Summary Tables
Eigenfaces (for Face Recognition)
Algorithms II Software Development Life-Cycle.
Name: Aimee McLaughlin
Computer Software: Programming
Career Portfolios Building Your Own Personal Career Portfolio
Paragraphs Today we’re aiming to learn about improving your paragraphing skills. So we meet again! Here’s a question: When do we begin a new paragraph?
Using Cornell Notes in the Math classroom.
Kodu Game Lab Shaw STEM Lab-2016.
Developmental Psychology Final Project:
The Need for Algorithms 2 days
From Fan To Pro: Using Your Hobbies in Your Career
IBM Start Now Host Integration Solutions
Introduction CSE 1310 – Introduction to Computers and Programming
Knowledge Representation
Using Office 365 in the Classroom
Ch 11 Resource Constraints and Linear Programming
BugHint: A Visual Debugger Based on Graph Mining
S.T.A.I.R CSCI N207 Data Analysis Using Spreadsheet Lingma Acheson
Title of Project Joseph Hallahan Computer Systems Lab
Tonga Institute of Higher Education IT 141: Information Systems
Applying Use Cases (Chapters 25,26)
New country and Varied Cultures
Tonga Institute of Higher Education IT 141: Information Systems
Presentation transcript:

Nonogram Solver Cs491b Software Design Prepared by : Irvin P. Bustos Buenrostro June 12, 2009 CALIFORNIA STATE UNIVERSITY LOS ANGELES Los Angeles, California

Background and overall objectives A Nonogram that is game that is known with other several games such as : paint by number, Picross. A Nonogram is a picture logic puzzle game where the main objective is to get a hidden picture at the end by following the rules that are placed on the top and to de side of the grid. The game is very simple to play basically the player must follow the rules to be able to start shading the inside of the grid The main objective of the project is basically a Nonogram solver and a graphical user interface(GUI) where the user can input the rules to get the final answer

Nonogram Solver The reason or the motivation to create a solver was basically was because as a Nonogram player sometimes when I a solve a puzzle there is the need to make sure that the answer I have was the correct one. And what it makes special this project and different than others is that uses constraint programming as the main approach. To be able to get the solver it is important to understand the way that the Nonogram is set up and how is played. Form there once we know how is done we can start developing and create the solver. But as we are going to see that those techniques are not necessary to be implement and look at other directions and see what is easier to implement.

How to Play The main rules of this game is basically to follow the rules/hints that are on the top and on the side of the grid. The Hints tells how many sequences they have to fit in that particular row or column. The Hints are read left to right on the rows and up to down in the columns and the sequences are applied in that order They should be at least of a blank space between each sequence A particular row or column can start with a blank space or not .

Playing Nonogram 5 3 3 3 5 5 3 3 3 5 5 3 3 3 5 X X 2,1 2,1 2,1 3,1 3,1 3,1 5 5 5 1,3 1,3 1,3 1,2 1,2 1,2

Constraint Programming It is know as the “Holy Grail” of programming. As Dr. Abbot suggested this particular logic game can be easily implement and be programmed using constraint programming since there is a logic in it and the constraints within the game need to be satisfied.

JaCoP JaCoP is a Java-based constraint solver. It is a library specialized on constraint programming, several different tools are available in this library. The need was to basically to get familiarized with the API to be able to understand the library and use those tools in such a way that the ideas or approach that I had creating the solver could be implemented.

Solution Approach The approach to make the solver was complicated at the beginning, but researching and looking at the work of other people that created Nonogram solver I realized that regular constraint was a critical part of the project to be able to implement the rules of the Nonogram. At the same time I had to create Automaton according the regular expressions to be able to implemented on JaCoP. It was very handy that JaCoP had a tool where the Automatons could be implement and that make the project easier. But learning the API was a challenge, but once I got familiarized everything came along smoothly.

Nonogram Solver GUI After I created the solver and it was working nice on the command line and I saw that the solver was coming up with the answers for Nonograms there was a need to create a Graphical User Interface where the hints of the Nonogram could be easy input to the program So the GUI was a critical part of the project to be able to have a interface where the user can input the rules and not to deal with the code it self.

Demonstration

Runs

Important implementation issues What it was sophisticated to implement my project was basically because of the usage of a constraint library. I had to got familiar with that library and be able to understand all the tools that were available. Another part of the project that is sophisticated is implementing the regular constraint and creating automatons with those regular constraint. Also satisfying the constraints of that the program should follow they had to be implemented perfectly or the program didn’t work. Sometimes I had to deal and change the code on the API to do what I wanted to do.

Future Additions? Some of the additions that can be added to this project are the following: Game interface Display all solutions (if applicable). 3d Nonogram Solver (Rittai Picross) or Solid Geometric Picross

Final words This class and this project provide me with great opportunities to implement and create something of my interest. It was a reinforcement to the knowledge acquired in the rest of the Computer Science classes, It provide me with the opportunity to research and learn/reinforce the knowledge. I also want to thank Dr. Abbott for not giving up on me and provide me with courage to done this project. Even when I said that it wasn’t possible he encourage me to prove my self wrong. One of my future job towards this project, is extend it and make the game interface. But more important I see a lot of potential creating the 3D Nonogram Solver which sounds challenging.

Reference http://upload.wikimedia.org/wikipedia/commons/6/64/Paint_by_numbers_Animation.gif http://jacop.cs.lth.se/img1.png http://www.wiiwii.tv/wp-content/uploads/2009/02/rittaipicross.jpg http://www.superblog.jp/mt/images/tetrical.jpg