🧩

Nonogram Solver

Algorithm and UI system to solve nonogram puzzles with optimized complexity analysis and custom file codec for puzzle data.

📅 S6 Polytech Sorbonne
⏱️ 4 months development
👥 Individual Project
C Algorithms UI Design File Systems Optimization

Project Overview

The Nonogram Solver is a sophisticated algorithm implementation that automatically solves nonogram (also known as picross) puzzles using advanced constraint satisfaction techniques and logical deduction methods.

This project demonstrates the application of computational algorithms to solve complex logical puzzles while maintaining efficiency and providing detailed analysis of the solving process.

Key Features

  • 🧩 Automated puzzle solving
  • ⚡ Optimized algorithms
  • 📊 Complexity analysis
  • 💾 Custom file format
  • 🎯 Step-by-step visualization

Algorithm Demonstration

Watch the complete demonstration of the Nonogram Solver's applied algorithms and solving process:

Algorithm Implementation

Core Solving Strategy

The nonogram solver employs a multi-layered approach combining several algorithmic techniques:

// Pseudocode for main solving algorithm while (!puzzle_solved && progress_made) { progress_made = false; // Apply line solving for each row for (each row) { if (solve_line(row, row_constraints)) { progress_made = true; } } // Apply line solving for each column for (each column) { if (solve_line(column, column_constraints)) { progress_made = true; } } // Apply advanced techniques if simple solving stalls if (!progress_made) { progress_made = apply_advanced_techniques(); } }

System Architecture

Core Components

  • Puzzle Parser: Input validation and constraint extraction
  • Solver Engine: Main algorithmic logic implementation
  • State Manager: Grid state tracking and validation
  • File Handler: Custom codec for puzzle data

Data Structures

  • Grid Representation: 2D array with state enumeration
  • Constraint Lists: Optimized storage for row/column rules
  • Solution Stack: Backtracking for advanced cases
  • Performance Metrics: Runtime analysis data structures

Algorithm Optimizations

  • Early Termination: Detect unsolvable configurations
  • Memoization: Cache results for repeated calculations
  • Heuristic Ordering: Prioritize high-constraint lines
  • Incremental Updates: Minimize redundant computations

Analysis Features

  • Time Complexity: Big-O analysis for different puzzle sizes
  • Space Complexity: Memory usage optimization tracking
  • Success Rate: Statistical analysis of solving accuracy
  • Performance Profiling: Bottleneck identification tools

Results & Applications

The Nonogram Solver demonstrates practical applications of algorithmic thinking and optimization techniques:

🎮

Game Development

Algorithm techniques applicable to puzzle game development and procedural content generation.

🔬

Research Applications

Constraint satisfaction techniques useful for scheduling, resource allocation, and optimization problems.

🎓

Educational Tool

Demonstration of algorithm complexity analysis and optimization techniques in practical applications.

Performance Analysis

Real-world example of algorithm optimization and computational complexity measurement.

← Back to Projects