Ver Mensaje Individual
  #6 (permalink)  
Antiguo 10/08/2013, 07:10
Avatar de bersonzini
bersonzini
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Codificación de textos de mi infancia cambiando letras de lugar

Cita:
Iniciado por mortiprogramador Ver Mensaje
<saludos>
Pues en vista que no hubo answer, por ahora publico lo que llevo

Código PHP:
Ver original
  1. <?php
  2.     $cadena = 'las abejas hacen miel';
  3.     $vocalesiniciales = 'aeouáéóú';
  4.     $vocalesfinales = 'uoeaúóéá';
  5.     $cadena=strtr($cadena,$vocalesiniciales,$vocalesfinales);
  6.     $cadena.'<br>';
  7.     $cadenapalabras = explode(' ',$cadena);
  8.     $test = array('a','e','i','o','u','á', 'é', 'í', 'ó', 'ú');
  9.     $posicionesacambiar = array();
  10.  
  11.     for( $i = 0; $i < sizeof($cadenapalabras); $i++ )
  12.     {
  13.         $k = 0;
  14.         for($j = 0; $j < strlen    ($cadenapalabras[$i]); $j++)
  15.         {
  16.             if( !array_search($cadenapalabras[$i][$j], $test ))
  17.             {    
  18.                 $posicionesacambiar[$i][$k] = $j;
  19.                 $k++;
  20.             }
  21.         }    
  22.        
  23.         for($j = 0; $j < sizeof($posicionesacambiar); $j++)
  24.         {    
  25.             if( $j == 0 )
  26.                 $l = 0;
  27.  
  28.             if( $j % 2 == 0  && strlen($cadenapalabras[$i]) > 2 )
  29.             {        
  30.                 if ( $l == 0 || $l > 0 && strlen($cadenapalabras[$i]) % $l == 0 && $l < sizeof($posicionescambiar[$i]) )
  31.                 {
  32.                     $tmp = $cadenapalabras[$i][$posicionesacambiar[$i][$l]];            
  33.                     $cadenapalabras[$i][$posicionesacambiar[$i][$l]] = $cadenapalabras[$i][$posicionesacambiar[$i][$l+1]];
  34.                     $cadenapalabras[$i][$posicionesacambiar[$i][$l+1]] = $tmp;        
  35.                     $l++;            
  36.                 }            
  37.             }
  38.                
  39.         }
  40.     }
  41.     echo $salida = implode(' ', $cadenapalabras);
  42. ?>

Suerte con eso!!!

</saludos>
Hola mortiprogramador, muchas gracias por tu respuesta
me das varias ideas nuevas, sin embargo no lo logro aún.

funciona perfecto con palabra cortas, pero te detallo el error:
todas las consonantes se cambian de lugar (y si fueran impares la del medio quedaría en la misma posición)

ejemplo de palabras:
muercielago -> galciorume
hacen -> nucoh

'las abejas hacen miel para el murcielago'
tu codigo traduce: sul ujobus cuhon liom rupu ol amrcioluge
y sería: sul usejub nuhoc liom rupu ol galciorume

me ayudan mucho tus respuestas