Script para intercambiar símbolos en un texto

Iniciado por JonaLamper, 8 Enero 2018, 14:06 PM

0 Miembros y 1 Visitante están viendo este tema.

JonaLamper

Muy buenos días,

Estoy tratando de buscar alguna forma de, teniendo este código (no es más que un pseudocódigo):


x = 5
r = 1
while 0 < x
    r = r * x
    x = x - 1
endwhile
write r
end


Al ejecutar un script me intercambie los símbolos. Por ejemplo: donde hay un < debería poner, aleatoriamente, un >, <= o >=. Donde hay un *, debería poner, aleatoriamente, un -, + o /. Y al programa modificado, guardarlo en un fichero diferente. Así podría hacer muchas modificaciones de ese programa y tener muchos mutantes diferentes.

¿Alguien me podría decir o dar ideas sobre cómo podría hacerlo de una forma más o menos sencilla?

Como siempre, muchísimas gracias  ;D
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

JonaLamper

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

fary

Un byte a la izquierda.

JonaLamper

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

fary

Ya que trabajas en Linux te he hecho este pequeño script en Perl :laugh:, espero que te sirva.

Código (perl) [Seleccionar]
#!/usr/bin/perl

use strict;

my @Operacion = ('+', '-','*',"/");
my @Signos = ('<','>',"<=", ">=");
my $Aleatorio;
my  $archivo = <<"FIN_DATOS";
x = 5
r = 1
while 0 F x
    r = r J x
    x = x K 1
endwhile
write r
end
FIN_DATOS

$Aleatorio = int(rand(3));
$archivo =~ s/J/$Operacion[$Aleatorio]/;
$Aleatorio = int(rand(3));
$archivo =~ s/K/$Operacion[$Aleatorio]/;
$Aleatorio = int(rand(3));
$archivo =~ s/F/$Signos[$Aleatorio]/;   

open (my $file,">archivo.txt") or die "No se pudo crear el archivo";
print $file $archivo;
close ($file);

exit;


Cada vez que lo ejecutes te generará un archivo diferente en la ruta en la que este el script.

espero que te sirva...

saludos.
Un byte a la izquierda.