A Java/Vaadin algebra and puzzle-solving application that combines conventional calculation with specialized tools for solving unusual numerical, logical, and word-based problems.
Overview
I developed The Algebrator from an algebraic calculator into a broader problem-solving environment through repeated use on real puzzles.
It supports conventional mathematical operations alongside specialized solver functions I built in response to specific problem types. These include tools for integer constraints, letter-value problems, remainder and modulo relationships, number sequences, digit operations, word-based constraints, and other puzzle-oriented forms of reasoning.
I built it with Java, Spring Boot, Vaadin, and Symja, added automated JUnit testing, and refined it iteratively through a human-directed AI-assisted development process.
A Recurring Development Pattern
The Algebrator's feature set grew from real puzzle-solving needs. A characteristic development cycle:
- Identify a problem that is awkward or impossible to express using the existing toolset
- Analyze the underlying reasoning
- Define the smallest reusable function or workflow that would solve that class of problem
- Create an implementation specification
- Use GitHub Copilot as an implementation assistant
- Test the result against the original puzzle and additional cases
- Revise the feature when real use reveals workflow or design weaknesses
What It Demonstrates
The Algebrator demonstrates not only software development but the evolution of a specialized tool through sustained practical use. The solver functions exist because real puzzle-solving situations demanded them — I didn't design them in advance from a feature checklist.
The iterative refinement process also serves as a case study in human-directed AI-assisted development: I define the requirements and testing strategy first; the AI assists with implementation within those bounds.
Demonstrations
Watch the Algebrator in action: Algebrator + Puzzle GridWorks demo video. You can also try the deployed application.