• Publicidad

Ayuda con la lógica

Todo lo relacionado con lenguajes de programación distintos de Perl: PHP, Java, C++, Ruby, Python, etc.

Ayuda con la lógica

Notapor Rene Serrano » 2007-11-13 11:26 @518

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: Seleccionar todo
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: Seleccionar todo
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 :oops:

Saludos.
------------
¦23n3
Rene Serrano
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2006-11-27 12:35 @565
Ubicación: El salvador CA

Publicidad

Notapor Rene Serrano » 2007-11-13 12:07 @546

Gracias por tu interes Explorer.
pero lo que quiero es volver a cambiar el orden de este arreglo
Código: Seleccionar todo
arrayCambio=[tsaoc_]


y ponerlo en forma original
como hacer este proceso en base al arreglo que lo desordeno es el problema


Código: Seleccionar todo
arrayOrigina[costa_]


Saludos
------------
¦23n3
Rene Serrano
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2006-11-27 12:35 @565
Ubicación: El salvador CA

Notapor Norther » 2007-11-13 12:19 @554

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 ^^

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@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";
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Salida:
Código: Seleccionar todo
$ perl we.pl
c o s t a _
_ a t s o c


Para volver a ponerlo normal, pues exactamente el mismo proceso..
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor Rene Serrano » 2007-11-13 12:34 @565

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: Seleccionar todo
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
------------
¦23n3
Rene Serrano
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2006-11-27 12:35 @565
Ubicación: El salvador CA

Notapor Norther » 2007-11-13 12:38 @568

Ah, vale, vale, ahora lo entendí, suena divertido voy a ver qué se me ocurre :P
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor Norther » 2007-11-13 12:56 @581

Vale, creo que ya lo tengo, al menos si es que te entendí bien esta vez :P

El código es este:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@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";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Y esta es la salida:

Código: Seleccionar todo
$ 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).
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor explorer » 2007-11-13 13:01 @584

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/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 _
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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: Seleccionar todo
$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]
...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Rene Serrano » 2007-11-13 13:17 @595

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.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@ArrayOrigina[ @ArrayOrden ] = @ArrayCambio;

print "@ArrayOrigina\n"; # Ordenado    c o s t a _
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿Cómo hago esto en Java?

Saludos
------------
¦23n3
Rene Serrano
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2006-11-27 12:35 @565
Ubicación: El salvador CA

Notapor explorer » 2007-11-13 13:25 @600

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 :-D

¿Has probado en algún foro de Java? :twisted:

Cuando lo sepas, lo pones por aquí, por favor, para comparar los dos programas, el tuyo y el mío :roll:

También espero que alguien más de este foro te ayude.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Norther » 2007-11-13 16:34 @732

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.
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Siguiente

Volver a Programación en general

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado