[Programación] Re: [Programación] Transformar algoritm o en pseudolenguaje a perl (aca me doy. ..)

Nicolás Aimetti programacion@lugro.org.ar
Thu, 08 Dec 2005 10:52:12 +0000


Hola...
Acá te tiró algunas ideas basandome en lo que pusiste al principio...
Ojó, no me puse a mirar el algoritmo completo (ni siquiera como 
empieza), sólo hice algunas de las cosas que mencionaste al principio, 
más tarde si ando con más tiempo me pongo a ver bien el algoritmo...


#!/usr/bin/perl -w
use strict;

#Entrada el vector vectores A[1..N]  donde los elementos son un TAD
#{a1,a2} (estructura de datos) tal que A[i].a2=F(A[i].a1), pude haber
#elementos repetidos y la función no es inyectiva... Salida una matriz
#binaria (en representación vector), donde solo imprimo los elementos no
#nulo, se inicia toda con ceros. (si ya sé que es complejo y no le
#estudié la complejidad para sacarle el N**p... pero no es relevante eso)

#Supongo que a1,a2 son de tipo numerico, aunque realmente no importa, es 
#un ejemplo nomás

my @A = ( #una simple lista, que contiene otras listas...
         [ 1, undef],   #A[0].a1 = 1, A[0].a2 = indefinido aun
         [ 4, undef],   #A[1].a1 = 4, A[1].a2 = indefinido aun
         [ 8, undef],   #etc...
         [ 10, undef],
         [ 12, undef],
         [ 3, undef],
         [ 4, undef],
);

#definimos una funcion f/ f(x) = x**2  (x al cuadrado), como para 
ejemplificar,
#f podría ser cualquier otra cosa...
sub F{
         my $a = shift;
         return $a**2;
}

#aplicamos f a A  para obtener A[i].a2=F(A[i].a1)

my @B = map { my ($a1,$a2) = @$_; $a2 = F($a1); [$a1,$a2] } @A;

#ordenamos B lexicograficamente con respecto a a1

@B = sort { $a->[0] <=> $b->[0] } @B;

#mostramos B

print "(\n";
print "\t",join(',',@$_),$/ for @B ;
print ")\n";

_END_

Cualquier cosa que no se entienda bien preguntá nomás...
Más tarde sigo respondiendo.

Saludos,
         Nicolás.