domingo, 23 de junio de 2013

Saber el numero mayor de un array Perl

En ocasiones necesitamos saber cual es valor mas alto numéricamente hablando,de un array o de un hash,en esta ocasion veremos los array,el algoritmo es simple:

1.Definir un valor a 0

2.Recorrer el array y comparar el valor de cada elemento con el de 0.

3.Como es obvio esperar un valor mayor a 0 cambiamos el valor de 0 al valor del elemento del array.

4.Regresamos al paso 2

Eso en Perl luce asi:



 #!/usr/bin/env perl  
 my @prueba = ( 8,1,2,2,6881);  
 print num_mayor(@prueba),"\n";  
 sub num_mayor  
 {  
   my @array = @_;  
   my ($n,$mayor) = (0,0); # Definimos dos numeros para trabajar el bucle  
   while ($n < scalar(@array)) # Recorremos el array  
   {  
     if ($mayor >= $array[$n]) # Vemos si es mayor o igual  
     {  
       $mayor = $mayor; # Si es asi sigue teniendo su valor  
     }  
     else # Si no es asi  
     {  
       $mayor = $array[$n]; # Obviamente es menor y le ponemos un nuevo valor  
     }  
     $n+=1; # Interaccion  
   }  
   return $mayor if ($mayor != 0); # Regresamos valor si no es 0  
 }  


Es simple el algoritmo,y podemos hacerlo en C,PHP,Lua,Javascript,etc,por ejemplo en ruby:


O en python me gusta usar un "truco",voltear la lista y imprimir el primer valor que debería ser el numero mayor:

 #!/usr/bin/env python3  
 prueba = [2,4,3,222,12]  
 def num_mayor(x):  
   mayor = sorted(x)  
   mayor = mayor[::-1]  
   return mayor[0]  
 print (num_mayor(prueba))  

En perl no se si existen estas funciones,porque hemos hablado de pop,shift,etc pero trabajan diferente,de todas formas me gusta parsear,para ver como funcionan las funciones del lenguaje de programación :D.

Espero que les sirva.

No hay comentarios.:

Publicar un comentario

Los comentarios serán revisados antes de ser publicados.