Mar Nov 13, 2007 10:26 am
|
 |
Rene Serrano
Perlero Nuevo

|
Registrado: 27 Nov 2006
Mensajes: 82
Ubicación: El salvador CA
|
|
| Ayuda con la lógica |
|
|
Buen día a todos,
Estoy haciendo un programa como repaso, pero he llegado a un punto de la lógica no me deja continuar; ok, el punto es que realicé cambios de posición a un string en base a arreglo. Por ejemplo.
| Código: |
arrayOrden = [3,2,4,1,0,5] //este es el orden en que se ordenará el string
ArrayPalabra=[costa_] //palabra a ordenar |
Utilizando estos dos a array pude cambiar el orden fácilmente quedando de la siguiente manera:
| Código: |
| arrayCambio=[tsaoc_] |
pero no encuentro la forma de este array volverlo a la palabra original; ya pasé un tiempo y no veo la forma. A ver si alguien me echa la mano para hacerlo porque ya me estoy frustrando. De seguro es algo fácil pero yo no lo veo
Saludos. |
|
|
|

Mar Nov 13, 2007 11:07 am
|
 |
Rene Serrano
Perlero Nuevo

|
Registrado: 27 Nov 2006
Mensajes: 82
Ubicación: El salvador CA
|
|
|
|
|
Gracias por tu interes Explorer.
pero lo que quiero es volver a cambiar el orden de este arreglo
| Código: |
arrayCambio=[tsaoc_] |
y ponerlo en forma original
como hacer este proceso en base al arreglo que lo desordeno es el problema
| Código: |
arrayOrigina[costa_] |
Saludos |
|
Mar Nov 13, 2007 11:19 am
|
 |
Norther
Perlero Frecuente

|
Registrado: 24 Jul 2007
Mensajes: 117
Ubicación: Asturias
|
|
|
|
|
Pues aquí te dejo esta chapuza, estoy seguro de que en Perl se puede hacer de formas mas estilisticas pero esto es más bien lo que yo haría en C escrito en Perl ^^
| Perl: | @normal = ("c", "o", "s", "t", "a", "_");
$x= 5;
for($i= 0; $i<= 5; $i++ ) {
$alreves[$i] = $normal[$x];
$x--;
}
print "@normal\n";
print "@alreves\n"; |
Salida:
| Código: |
$ perl we.pl
c o s t a _
_ a t s o c |
Para volver a ponerlo normal, pues exactamente el mismo proceso.. |
|
Mar Nov 13, 2007 11:34 am
|
 |
Rene Serrano
Perlero Nuevo

|
Registrado: 27 Nov 2006
Mensajes: 82
Ubicación: El salvador CA
|
|
|
|
|
Gracias Norther. Tu programa me serviría si solo lo tengo que colocar al revés pero en este caso el orden de la palabra lo defino de cualquier forma, no exactamente al revés.
| Código: |
arrayOrden = [3,2,4,1,0,5] //este es el orden en que se ordenará el string
ArrayPalabra=[costa_] //palabra a ordenar |
Entonces es ahí el punto interesante.
Saludos |
|
Mar Nov 13, 2007 11:38 am
|
 |
Norther
Perlero Frecuente

|
Registrado: 24 Jul 2007
Mensajes: 117
Ubicación: Asturias
|
|
|
|
|
Ah, vale, vale, ahora lo entendí, suena divertido voy a ver qué se me ocurre  |
|

Mar Nov 13, 2007 11:56 am
|
 |
Norther
Perlero Frecuente

|
Registrado: 24 Jul 2007
Mensajes: 117
Ubicación: Asturias
|
|
|
|
|
Vale, creo que ya lo tengo, al menos si es que te entendí bien esta vez
El código es este:
| Perl: | @normal = ("c", "o", "s", "t", "a", "_");
print "Introduce del 0 al 5 en el orden en que quieres que aparezca la palabra:\n";
print "(ej: 0 1 2 3 4 5 es 'costa_')\n";
for($i= 0; $i<= 5; $i++ ) {
$orden[$i] = <STDIN>;
}
for($i= 0; $i<= 5; $i++ ) {
$alreves[$i] = @normal[@orden[$i]];
}
print "La palabra colocada como has dicho es: @alreves\n"; |
Y esta es la salida:
| Código: |
$ perl we.pl
Introduce el orden que quieres darle a la palabra:
(ej: 0 1 2 3 4 5 es 'costa_')
1
2
3
4
0
5
La palabra colocada como has dicho es: o s t a c _ |
Para introducir los datos lo puse de manera que introduzcas el primer número y enter, el segundo número y enter, y así hasta 5 (los caracteres de la palabra en cuestión). |
|

Mar Nov 13, 2007 12:01 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4130
Ubicación: Valladolid, España
|
|
|
|
|
| Perl: | #!/usr/bin/perl
@ArrayOrden = qw[ 3 2 4 1 0 5 ];
@ArrayPalabra = qw[ c o s t a _ ];
@ArrayCambio = @ArrayPalabra[ @ArrayOrden ];
print "@ArrayCambio\n"; # Desordenado t s a o c _
@ArrayOrigina[ @ArrayOrden ] = @ArrayCambio;
print "@ArrayOrigina\n"; # Ordenado c o s t a _
|
Los mismos índices que han cambiado las letras de sitio, son las que nos dicen las posiciones de las letras que tenemos que leer. Implícitamente, el orden dentro de los arrays es información útil para recomponer la palabra original.
Ejemplo (de la última conversión):
| Código: |
$ArrayOrden[0] => 3, luego $ArrayCambio[0] => 't' irá en $ArrayOrigina[3]
$ArrayOrden[1] => 2, luego $ArrayCambio[1] => 's' irá en $ArrayOrigina[2]
$ArrayOrden[2] => 4, luego $ArrayCambio[2] => 'a' irá en $ArrayOrigina[4]
... |
|
|

Mar Nov 13, 2007 12:17 pm
|
 |
Rene Serrano
Perlero Nuevo

|
Registrado: 27 Nov 2006
Mensajes: 82
Ubicación: El salvador CA
|
|
|
|
|
Gracias Explorer pero se me olvidó comentar que no estoy trabajando en Perl sino en Java. Habrá una forma de usar esa lógica en Java o si me haces el favor de explicarme como lo tengo que hacer te lo agradecería.
| Perl: | @ArrayOrigina[ @ArrayOrden ] = @ArrayCambio;
print "@ArrayOrigina\n"; # Ordenado c o s t a _
|
¿Cómo hago esto en Java?
Saludos |
|

Mar Nov 13, 2007 12:25 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4130
Ubicación: Valladolid, España
|
|
|
|
|
Naturalmente que habrá una forma de hacerlo en Java, pero por fortuna, no la sé.
Además, seguro que para hacerlo hay que escribir más líneas...
Lo siento, los programadores de Perl no podemos perder el tiempo escribiendo más de lo necesario
¿Has probado en algún foro de Java?
Cuando lo sepas, lo pones por aquí, por favor, para comparar los dos programas, el tuyo y el mío
También espero que alguien más de este foro te ayude. |
|
Mar Nov 13, 2007 3:34 pm
|
 |
Norther
Perlero Frecuente

|
Registrado: 24 Jul 2007
Mensajes: 117
Ubicación: Asturias
|
|
|
|
|
| Yo habitualmente programo en C y un poco en Java aunque todavía no nos hayamos metido mucho con ello (primero suele darse C hasta que no aguantas más y luego Java) y sí, puedo confirmar que serían MUCHAS más líneas. |
|
Mie Nov 14, 2007 3:57 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 486
Ubicación: Frente al monitor
|
|
|
|
|
¿Java, Lips, Prolog...?
Noooo...
 |
|
Mie Nov 14, 2007 4:59 pm
|
 |
Norther
Perlero Frecuente

|
Registrado: 24 Jul 2007
Mensajes: 117
Ubicación: Asturias
|
|
|
|
|
| jajaja muy bueno |
|
Jue Nov 15, 2007 5:14 pm
|
 |
Rene Serrano
Perlero Nuevo

|
Registrado: 27 Nov 2006
Mensajes: 82
Ubicación: El salvador CA
|
|
|
|
|
Hola, créanme que solo en Perl me gusta programar para la web pero en aplicaciones Desktop me gusta Java, opinión muy personal, pero en fin, gracias por su apoyo. No he terminado por falta de tiempo pero pondré la respuesta cuando lo haga. Norther: usando tu lógica ¿cómo volverías el string al estado original?
Saludos. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|