Freecell Deal Finder

Deal Finder

Find the deal number of a Microsoft Freecell deal, a kind of card solitaire game. Please enable JavaScript.

Instructions

Downloading…

Input a Freecell layout in the fc-solve format:




Status: Not started

Bookmark This Form

You can use the button below to generate a URL that will auto-populate the form. This is also useful for reporting problems.


How to Use

Enter a board in the input text area in Freecell Solver’s input format with each line of input representing a column (or stack) of cards. Press the “Find” button to try to find the deal's index, and assuming it was successful, you will be able to read and/or copy the output from the status display.

Enjoy!

Technology

This is a web-based interface to Freecell Solver, that was translated from the C source code to JavaScript, by using the emscripten LLVM bit-code to JavaScript compiler. Like Freecell Solver itself, this JavaScript port is open-source software under the permissive MIT/Expat licence.

Other technologies used for writing this page are:

  • jQuery - the “write less, do more” JavaScript library. A convenient JavaScript browser-side library for DOM manipulations, UI and much more.

  • jQuery UI - a library for user-interface controls based on jQuery.

  • jQuery Phoenix Plugin - a form persistence plugin for jQuery using the HTML5 localStorage mechanism.

  • Solitairey by Paul Harrington (see the open source maintenance branches) - was used for the graphical animated preview. Under the 2-Clause BSD licence.

  • YUI - a JavaScript library used by Solitairey.

  • TypeScript - a static-typing superset of JavaScript. I am not a static-typing-purist, but I find TypeScript a significant improvement.

  • Joose - an object oriented programming system for JavaScript (inspired by Perl's Moose). Note: it is no longer used here due to not being compatible with Node.js and non-browser environments.

  • jquery-querystring -a plugin for jQuery for manipulating query strings.

  • Firebug - a web development tool for Firefox, that provides a JavaScript debugger, a CSS manipulation tool, DOM introspection and more. (The Opera web browser's Opera Dragonfly does something similar for Opera, and is also useful.)

  • Google Web Fonts - provides an attractive font for the button leading to this page.

Credits

  • Alon Zakai - writing emscripten, the LLVM-to-JavaScript compiler that was used to prepare this page, based on the original C (gnu99) source, and answering some bug reports and questions I filed about it.

  • Stefan Petrea - inspired the implementation of the populate-with-sample-board button.

  • Amir Aharoni - tipped me regarding integrating @font-face into my CSS.

  • Ari Becker - tipped me regarding unsolvable deals.