Solitare
sub D {for ($i=0;$i<49;)
{print $i%7==0?"\n":"",
$b[$i++];} print "\n? ";
} sub I{(3-$_[1])*7+$_[0
]+3;}sub F{for($i=0;$i<49;++$i){return $i if$b[$i] eq
$_[0];}} sub X{$_[0]%7-3;} sub Y{3-int$_[0]/7;}for($i=0,
$j=96;$i<49;){$b[$i++]= abs&X($i)>1&&abs&Y($i)>1
?" ":$i==24?".":chr($j= $j<122?$j+1:49);}D;while
(<>){chomp;$j=F(chop);$f=F($_);next if$j>49||$f>49||$j==
$f;$u=X($j);$v=Y($j);$x=X($f);$y=Y($f);$t=I($u>$x?$u+1:
$u<$x?$u-1:$x,$v>$y?$v+1
:$v<$y?$v-1:$y);if($b[$t
]eq ".") {$b[$t]=$b[$f];
$b[$f]=$b[$j]=".";} D;}