Futoshiki Puzzle App
Constraint-based puzzle system with explainable solving logic, adaptive hint exploration, and long-term Play Store ownership.
Origin
Existing Futoshiki puzzle apps on Google Play were outdated, with poor UX, frustrating interactions, and limited discoverability of solving logic. This quality gap presented a product opportunity: build a puzzle system where constraint-based reasoning is visible, responsive, and intellectually satisfying rather than opaque and trial-and-error.
The product required both algorithmic correctness and responsive UX. Puzzle games demand instant feedback on every move—each placement simultaneously affects row uniqueness, column uniqueness, and inequality constraints. I architected a 24,000+ curated puzzle catalog with deterministic difficulty classification, custom Canvas rendering for precise board control, and immutable state management supporting undo/redo and session persistence. The constraint validation engine provides immediate visual feedback without perceptible lag, maintaining gameplay flow.
The app was self-published to Google Play with complete product ownership: design decisions, Play Billing and AdMob monetization, user reviews, and ongoing maintenance. In 2025, I modernized the codebase with Navigation Component, Firebase Crashlytics for production monitoring, and began constraint-solving research for explainable hint generation—demonstrating continued engineering investment years after initial release.
Product Preview

Constraint-based puzzle solving with real-time validation and candidate tracking.

Deterministic puzzle solving with real-time candidate tracking and accessibility-focused design.

Game modes, progression systems, and long-term puzzle experience.

Customizable puzzle experience with difficulty selection and accessibility controls.

Explainable hints guide players through deterministic puzzle reasoning without revealing answers.

Constraint-based puzzle solving with real-time validation and candidate tracking.

Deterministic puzzle solving with real-time candidate tracking and accessibility-focused design.

Game modes, progression systems, and long-term puzzle experience.

Customizable puzzle experience with difficulty selection and accessibility controls.

Explainable hints guide players through deterministic puzzle reasoning without revealing answers.
Swipe to see more
Technical Challenges & Solutions
Real-Time Constraint Validation System
Problem
Every move simultaneously affects row uniqueness, column uniqueness, and inequality constraints. Puzzle games require immediate visual feedback without perceptible lag—any delay breaks gameplay flow and undermines the logic-driven experience.
Solution
Designed a layered validation architecture with deterministic rule evaluation: row/column uniqueness checks, inequality relationship validation, and candidate tracking. Optimized for sub-frame execution to maintain 60fps responsiveness while providing instant visual feedback on every placement.
Puzzle Catalog Scale & Difficulty Architecture
Problem
Avoiding repetitive gameplay requires thousands of valid puzzles across calibrated difficulty levels. Manual curation is impractical at scale, yet generated puzzles must maintain solvability and logical consistency.
Solution
Architected a <b>24,000+ curated puzzle dataset</b> with deterministic difficulty classification based on constraint complexity and logical depth. Each puzzle validated for unique solution, logical solvability (no guessing required), and appropriate difficulty tier—ensuring consistent challenge progression across Easy, Medium, and Hard classifications.
Custom Canvas Rendering Engine
Problem
Standard Android View components could not provide the visual precision and touch responsiveness required for a polished puzzle grid. Board rendering, inequality symbols, and touch detection needed exact control over positioning and interaction.
Solution
Built a custom Canvas-based rendering engine with direct drawing operations for grid lines, cells, inequality constraints, and touch zones. Enabled precise visual control, responsive touch handling across screen sizes, and smooth animations—delivering native-feeling interaction quality that distinguishes the product in a saturated category.
Production Modernization & Maintenance
Problem
After several years in production, the codebase required architectural updates to align with current Android best practices, improve maintainability, and add production observability—without breaking existing user experiences.
Solution
Migrated to Navigation Component for modern fragment management, integrated Firebase Crashlytics for production error monitoring, and established structured logging infrastructure. These changes improved code organization and observability while maintaining backward compatibility—demonstrating long-term production ownership discipline.
Explainable Hint Engine
Futoshiki's explainable hint engine implements deterministic solving logic that teaches players how to reason through constraints. Rather than revealing answers directly, the system guides users through progressive logical deduction: identifying single candidates, propagating constraints via inequality relationships, eliminating invalid candidates, and surfacing reasoning in accessible language. This transforms the puzzle from trial-and-error into a guided learning experience.

Deterministic placement: when only one value fits in a row, the hint guides the player to the logical conclusion.

Candidate propagation: inequality constraints reveal which values are possible for each cell.

Constraint reasoning: chaining inequalities to propagate candidates from origin to destination.

Candidate elimination: removing values that violate row, column, or inequality constraints.

Deterministic placement: when only one value fits in a row, the hint guides the player to the logical conclusion.

Candidate propagation: inequality constraints reveal which values are possible for each cell.

Constraint reasoning: chaining inequalities to propagate candidates from origin to destination.

Candidate elimination: removing values that violate row, column, or inequality constraints.
Swipe to see more
Problem
Puzzle games often reveal answers directly or provide vague hints, making it difficult for players to actually learn solving strategies.
Built a deterministic, explainable hint engine that progressively teaches puzzle-solving logic through contextual reasoning.
Technical depth: Constraint propagation, candidate elimination, inequality-bound reasoning, immutable puzzle state, and deterministic solving rules.
Extended Toolkit
Learnings
- Constraint systems engineering: Implementing AC-3 constraint propagation and candidate elimination for explainable hints required translating formal mathematical reasoning into deterministic Android code—balancing correctness with performance.
- UX for logic systems: Good hints should teach reasoning through constraint propagation, not expose answers. Explainable assistance respects player intelligence.
- Production ownership: Self-publishing taught that Play Store releases, monetization tuning, and user review management are continuous responsibilities—not one-time milestones.
- Product iteration discipline: Modernizing legacy code without breaking existing users requires careful migration planning, observability integration, and backward compatibility.
- Bilingual UX complexity: English + Spanish localization revealed that locale-aware design and proper string extraction are essential for real product quality—not afterthoughts.
- Engineering maturity: Building real constraint-based systems taught more about Kotlin, Android architecture, and algorithmic thinking than any tutorial could provide.
Technical Exploration
Research directions and engineering curiosity — not roadmap commitments.
Advanced Constraint-Solving Coverage
Extending current hint engine with deeper mathematical deduction strategies and paper-informed logic to improve edge-case handling and broader puzzle coverage beyond AC-3 fundamentals.
Hybrid Puzzle Generation System
Exploring hybrid puzzle-generation combining mathematical constraints with ML-assisted validation to enable infinite, non-repetitive puzzle creation at scale.
Infinite Puzzle Mode
Investigating procedural generation systems for endless unique puzzle sequences—maintaining difficulty calibration and logical solvability without repetition.
Timed & Competitive Solving Modes
Researching efficiency-based solving modes that reward constraint-reasoning speed over brute-force—encouraging strategic thinking under time pressure.