FreeCell looks simple until a player tries to move a long descending run and the interface refuses. The useful programming lesson is that a legal “supermove” is not a special card rule. It is a compact way of representing a sequence of ordinary single-card moves through temporary storage.

This article derives a small capacity calculator that can be used in a browser-based FreeCell implementation, a rules explainer, or automated tests.

The basic capacity rule

Let:

F be the number of empty free cells.