Sólo porque alguna vez hice algo parecido, lo pongo para ampliar un poco el tema y ver si a alguien le sirve. Como les dije, es sólo algo parecido, un algoritmo en php que usa backtracking para obtener coincidencias en base a un diccionario de letras (en el ejemplo es muy limitado, pero se puede ampliar). Lo hice hace bastante, y es una tontería, así que no lo juzguen muy severamente:
Código PHP:
<?php
set_time_limit(0);
function cargar($palabra){
global $longitud;
global $posibles;
global $asignar;
$longitud=strlen($palabra);
$asignar=array();
$posibles =range(a,z);
for($i=0;$i<$longitud;$i++){
$asignar[$i]=$posibles;
}
}
function solucionado($palabra,$test){
if($test==$palabra)return 1;
return 0;
}
function paltmp(){
global $longitud;
global $posibles;
global $asignar;
for($i=0;$i<$longitud;$i++){
if(count($asignar[$i])==count($posibles))return 0;
}
return 1;
}
function ensayar($palabra){
global $longitud;
global $posibles;
global $asignar;
global $solucionado;
if($solucionado==1) return;
for($i=0;$i<$longitud;$i++){
if(count($asignar[$i])!=count($posibles))continue;
for($j=0;$j<count($posibles);$j++){
$asignar[$i]=$posibles[$j];
if(paltmp()>0){
$paltmp=implode('',$asignar);
if(solucionado($palabra,$paltmp)>0){
echo '<br />La solución es: '.$paltmp;$solucionado=1;return;
}
else echo '<br />'.$paltmp;
}
ensayar($palabra);
}
$asignar[$i]=$posibles;return;
}
}
$algo='papa';
cargar($algo);
ensayar($algo);
Acá ensayaríamos todas las posibilidades dentro de nuestro diccionario hasta encontrar la palabra 'papa'.