Jessica Sant wrote:So, I was a tad bored today and trying to avoid studying for my Mid-term in Machine Learning when I clicked on the standard "Windows Freecell" game... and it got me to thinking.
On the front page of the FreeCell help page it says:
The object of FreeCell is to move all the cards to the home cells, using the free cells as placeholders.
To win, make four stacks of cards on the home cells, one for each suit, stacked in order of rank, from lowest (ace) to highest (king).
It is believed (although not proven) that every game is winnable.
So... what if we build a game, teach it to play free cell and have it play every possible board??
Step 1- code the rules of free cell, all the legal moves and whatnot. Set up the Free Cell World.
Step 2- create an agent that determines all the possible legal moves given a particular state of the board and randomly selects a move to make, til there are none left. (Doubt we'll win many games this way, but its a start!)
Step 3- give the agent some smarts -- (this is where it gets tricky). Need to figure out a heuristic so that the agent can judge how "good" a particular move is compared to the others. Have it play by always choosing the best move and see how we do.
Step 4- get the agent to look ahead a few steps, and then determine which move is really the best one. -- If its possible, and if our heuristic is good -- this should win all the boards.
So... whaddya think? I think Step 3 is the really interesting part to discuss. The first two steps is simply a matter of coding.... and step 4 is just an extension of step 3... But what kind of heuristic do we come up with to judge the state of the board?
[ August 01, 2004: Message edited by: Jessica Sant ]