Over the years I often thought that there should be a calculator for Algebra that works this way... something where you can drag terms around and cancel & distribute with gestures, but most importantly enter your own problems. It should also do more kinds of problems than DragonBox allowed. So I finally decided to build it.
https://dicroce.github.io/wyrm/home.html
Here's a video showing it: https://www.youtube.com/watch?v=_STbS4zvIlU. If you'd rather just play with it: there's a limited in-browser demo (real engine, a few example equations, no download) on the landing page — https://dicroce.github.io/wyrm/home.html.
The app can be found on iOS (https://apps.apple.com/us/app/wyrm-math/id6782342042) and as of this week on Google Play (https://play.google.com/store/apps/details?id=com.dicroce.wy...).
I also decided to open source the underlying math engine so others could build on it: https://github.com/dicroce/wyrm_math. My goal for the engine btw is to build it all the way up to Calculus.
Monetization is deliberately boring: the engine is free (MIT), and the polished gesture app is $4.99 once. No subscriptions, ads, accounts, or analytics.
I'd love feedback on the engine design — especially from anyone who's worked on CAS or proof-assistant-adjacent problems. And if you played DragonBox as a kid and wished it went further: this is for you!
Here's a demo of a library for interactively eliminating variables from sets of equations:
https://youtu.be/7ysUdxTfKhU?is=lE5o9Besk1XNnggP
Source:
https://github.com/dharmatech/combine-equations.py
The interactive gui part starts at 4:08. Before that is the setup and context of the example.
If you ever move in the direction of supporting sets of equations and isolating variables, consider using colors to indicate known values and unknown values as is done in this library.
I test this library on exercises you'd find in college physics (motion, constant acceleration, projectile motion, Newton's laws, etc.) since these involve sets of equations and eliminating variables so that you have expressions in terms of known values.
The above demo uses a jupyterlite notebook, so everything runs client side in the browser. No server side kernel necessary.
To use your interactive fluid style in this library to eliminate variables, I could see the user first isolating that variable. Then dragging that variable they want to eliminate over an instance of that variable in another equation. So that's effectively the user saying "replace this variable with this expression".
The nearest thing that I've heard of is Wolfram Alpha's step-by-step solution solvers, but the worry with those is always that it's too easy for the student to just keep clicking next step and not learn anything.
I appreciate how this frames algebra as a puzzle instead of a problem :)
The Wolfram thing: https://www.wolframalpha.com/examples/pro-features/step-by-s...
Specifically this one: https://www.wolframalpha.com/input?i=find+t+for+t%5E2+%2B+3t...
Relatedly, I've been working on a step-by-step solver/calculator but I just use sympy (via pyodide) + mathlive. But I'm starting to see the limitations of running Python in the browser and am starting to look at js libraries now.
https://github.com/dicroce/wyrm_math
Probably it's most important feature for applications like this is that the id's of elements in the equations are stable (meaning, if an X has an id of 123 and a transformation moves it to the other side of the equals sign, it still has id 123... this allows you animate between states if you wish).