5 ms·
A sliding puzzle, built with Elm
- michaelsbradley 11y agoSource code: https://github.com/moroshko/sliding-puzzle https://github.com/moroshko/sliding-puzzle
- emailgregn 11y agoThat code is so -erm- pretty. And by popular accounts, Elm is a pleasure to develop with. I hope it catches on.
- abglassman 11y agoI'm pretty keen to play with Elm, but it gives me some pause that an app like this (or the demo at https://github.com/evancz/start-app https://github.com/evancz/start-app) results in... 11k lines of Javascript. Nevertheless, these talks got me bulled up on Elm: https://www.youtube.com/watch?v=FV0DXNB94NE https://www.youtube.com/watch?v=FV0DXNB94NE (Richard Feldman, collegially, on React -> Elm)</a> / https://www.youtube.com/watch?v=oYk8CKH7OhE https://www.youtube.com/watch?v=oYk8CKH7OhE (Evan Czaplicki on the motivation for Elm)
- michaelsbradley 11y agoThat's because the Elm compiler doesn't yet do much in the way of "dead code elimination" (DCE). However, that will change in a future release of Elm, once Joey Eremondi's work has been fully integrated. My understanding is that integration is not slated for the 0.16 release (imminent) but will likely be part of the 0.17 release. See: https://groups.google.com/forum/#!searchin/elm-dev/dead$20code%7Csort:date/elm-dev/ney653TeOmU/p8pr7JSDAQAJ https://groups.google.com/forum/#!searchin/elm-dev/dead$20co...
- hellofunk 11y agoAre they planning to leverage the Google Closure compiler the way Clojurescript does? Un-optimized Clojurescript is also huge until it runs through Closure compilation.
- hellofunk 11y agoI should have read that thread first; it appears the answer to my question is "yes".
- michaelsbradley 11y agoNo, I believe the DCE implementation (still in the works) is specific to the Elm compiler, as opposed to an implementation which organizes the source in such a way as to leverage Google's Closure compiler.
- cokernel 11y agoIt's a nice interface. I'm glad arrow keys, the first thing I tried, work. But you're not going to trick me into looking for a sequence of moves that change the parity of the underlying permutation.
- scrrr 11y agoI just found this article on the solvability of these puzzles: https://www.cs.bham.ac.uk/~mdr/teaching/modules04/java2/TilesSolvability.html https://www.cs.bham.ac.uk/~mdr/teaching/modules04/java2/Tile...
- earendil02 11y agoI wanted to win, so I just changed the goal to P,L,A,Y,T,H,I,S,G,A,M,E,W,O,N, which is solvable ;)
- jcl 11y agoThe game is solvable -- no tricks, just something you've overlooked. (Hint: Someone who doesn't know about parity might try scrambling the puzzle randomly, then find that they can reach the goal state about half of the time.)
- cwilkes 11y agoThat was fun. My usual technique of making a "train" of letters to slide and then attach a caboose didn't work. So I flipped my phone upside down and acted like I wanted to make the word WON at the top. I did then did the rest of th puzzle, finding out the difference from a normal 15 puzzle along the way.
- 11y ago
- sotojuan 11y agoVery nice! More reasons to try Elm out.
- hellofunk 11y agoI'm so fascinated by Elm. What a great addition to the world of JS tooling. I wish had more time to spend on it, but the Haskell syntax, the strict typing, the Haskell compiler, and reactive JS model, the emphasis on graphic UI building as a native language feature, all just really great and relevant ideas.
- michaelsbradley 11y agoThere's also PureScript, which is a little more "apples to apples" with Haskell. Both the Elm and PureScript compilers are written in Haskell. http://www.purescript.org/ http://www.purescript.org/ https://leanpub.com/purescript/read https://leanpub.com/purescript/read Also, some of the ideas from Elm are having an influence in the PureScript ecosystem. For example: https://github.com/bodil/purescript-signal https://github.com/bodil/purescript-signal See also: https://github.com/slamdata/purescript-halogen https://github.com/slamdata/purescript-halogen
- wdmeldon 11y agoElm looks absolutely fascinating to me, but one of the things that strikes me is odd is the prevalence examples that eschew markup for the canvas. Not a bad thing per se, but definitely a departure from what most JS Frameworks and tool sets show off.
- galfarragem 11y agoAnd it seems faster than the typical meteor app.
- methodOverdrive 11y agoCool. I plan to look at the source code later. One issue I noticed: when playing with the mouse, if I click on a tile, then click on some other tile, the FIRST tile clicked is the one that moves - which seems like a bug and is certainly a counterintuitive input behavior.