Remix.run Logo
Show HN: Wyrm – Solve algebra by touch, built on an open-source soundness engine(github.com)
40 points by dicroce 2 days ago | 5 comments

There is a mobile game called DragonBox. It sort of tricks you into learning algebra by starting with very abstract manipulations of a puzzle that must follow rules... gradually the game teaches you more and more rules and also strips out the more abstract elements until on the last levels you are finally solving real equations. I loved it, it taught my kids algebra.... and it was just fun.

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!

dharmatech 2 minutes ago | parent | next [-]

Very cool!

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

siraben 22 minutes ago | parent | prev | next [-]

This is very cool! I'd like to see a version for theorem proving/equational reasoning as well because I think the ideas behind reasoning about functional programs and proving properties about them are just many cases of rule-applying but people don't staring at equations or jump straight to a theorem prover, whereas a visual interface might make the transition a lot easier.

senkora an hour ago | parent | prev | next [-]

This is awesome. Congrats on shipping!

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...

bobajeff 3 hours ago | parent | prev [-]

I watched the video. I think I've been wanting something like this recently but there's not really a name for this sort of thing that I know of.

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.

dicroce 2 hours ago | parent [-]

The underlying math engine is written in typescript and is open source:

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).