(An excuse to play around with web-workers)
When you click "Solve It!", this will load a web-worker, written in Scala but cross-compiled to JavaScript. It will immediately set up and start solving the riddle, writing its progress asynchronously into the page.
Because we're using web workers, you'll need a recent browser (eg, Firefox, Safari, Chrome) and to load it from an http:// URL not a file:// URL (otherwise the browser will refuse to load the web worker).
We're going to solve this essentially as if it was a Sudoku. We start with a grid where every cell contains every possibility. We're then going to run through the grid, eliminating the impossibilities. (We try a value, check if it would immediately violate a constraint, and if so, kill that value from the grid.)
This particular puzzle solves with just the one move lookahead, though the code does contain a section for looking ahead a bit further if stuck.
The timer starts when the web worker is loaded, before it starts solving.