Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.23 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2. use strict;
  3.  
  4. use constant MAX => 5;
  5.  
  6. sub generar_numeros {
  7.     my ($a,$m,$lista_ref) = @_;
  8.     my ($b,$n) = (0,20);
  9.     $$lista_ref[0] = 1; #$a - $m
  10.     for(my $i=1;$i<MAX;$i++) {             
  11.         push @$lista_ref, ($a*$$lista_ref[$i-1] + $b)%$m;
  12.     }
  13.        
  14. }
  15.  
  16. sub ordenar_lista {
  17.     my $lista_ref = shift;
  18.     @$lista_ref = sort {$a <=> $b} @$lista_ref;
  19. }
  20.  
  21. sub normalizar {
  22.     my ($m,$lista_sin_normalizar,$lista_normalizada) = @_;
  23.    
  24.     # Diviendo entre el m?dulo
  25.     push @$lista_normalizada, $_/$m for (@$lista_sin_normalizar);
  26.    
  27. }
  28.  
  29. sub generar_columna2 {
  30.     my $lista_ref = shift;
  31.     for (1..MAX) {
  32.         $$lista_ref[$_ - 1] = $_/MAX;
  33.     }
  34. #   $$lista_ref[$_] = $_/6  for (0..MAX);  
  35. }
  36.  
  37. sub generar_columna3 {
  38.     my ($lista1_normalizada_ref,$lista_columna2_ref,$lista_columna3_ref) = @_;
  39.     $$lista_columna3_ref[$_] = $$lista_columna2_ref[$_] - $$lista1_normalizada_ref[$_] for (0..MAX-1);
  40.     for (0..MAX-1) {
  41.         $$lista_columna3_ref[$_] = $$lista_columna2_ref[$_] - $$lista1_normalizada_ref[$_];
  42.         $$lista_columna3_ref[$_] = abs($$lista_columna3_ref[$_]);
  43.     }  
  44. }
  45.  
  46. sub generar_columna4 {
  47.     my ($lista_columna4_ref,$lista1_normalizada_ref) = @_;
  48.     my @array_aux = ();
  49.     $array_aux[$_] = $_/MAX for (0..MAX-1);
  50.     for (0..MAX-1) {
  51.         $$lista_columna4_ref[$_] = $$lista1_normalizada_ref[$_] - $array_aux[$_];
  52.         $$lista_columna4_ref[$_] = abs($$lista_columna4_ref[$_]);
  53.     }
  54. }
  55.  
  56. my ($a,$m,@lista1) = (6,13,());
  57.  
  58. my $lista1 = generar_numeros($a,$m,\@lista1);
  59. #print "$_\t" for (@lista1);
  60. #print "\n";
  61.  
  62. ordenar_lista(\@lista1);
  63. my @lista1_normalizada = ();
  64. normalizar($m,\@lista1,\@lista1_normalizada);
  65.  
  66. # Haciendo la columna 2
  67.  
  68. my @lista_columna2 = ();
  69. &generar_columna2(\@lista_columna2);
  70.  
  71. # Haciendo la columna 3
  72.  
  73. my @lista_columna3 = ();
  74. &generar_columna3(\@lista1_normalizada,\@lista_columna2,\@lista_columna3);
  75.  
  76. my @lista_columna4 = ();
  77. &generar_columna4(\@lista_columna4,\@lista1_normalizada);
  78. #print "$lista_columna3[$_]\t"  for (@lista_columna3);
  79. #print "\n ORDENADO\n";
  80. #print "$_\t" for (@lista1_normalizada);
  81.  
  82. print "\nColumna #1\t Columna #2\t Columna #3\t Columna #4\n";
  83. for (my $i=0;$i<MAX;$i++) {
  84.     printf ("%.4f\t\t %.4f\t\t %.4f\t\t %.4f \n", $lista1_normalizada[$i],$lista_columna2[$i],$lista_columna3[$i],$lista_columna4[$i]);
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement