Ver Mensaje Individual
  #17 (permalink)  
Antiguo 07/04/2007, 19:39
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Re: permutaciones

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'.