Ich würde das per
Backtracking lassen.
D.h. dein Programm nimmt zunächst den ersten möglichen Zug, prüft ob weitere Züge möglich sind, nimmt dann wieder den ersten möglichen usw... Falls irgendwann keine Züge mehr möglich sind, aber noch Steine übrig, geht das Programm einen Schritt zurück und versucht den nächsten Schritt. Wenn alle Züge durchprobiert sind, geht es noch einen Schritt zurück usw.
Klingt jetzt recht abstrakt, aber im Wikipedia-Artikel ist das ganze genauer erklärt. Außerdem gibt es viele Beispiele dazu, auch in Delphi.