quarta-feira, 18 de janeiro de 2012

Carregar e ordenar uma matriz em Perl

Estava precisando carregar uma matriz 15x10 e ordenar os números desta matriz em ordem crescente.


#!/usr/bin/perl


use strict;
use warnings;


open INFILE, '<matriz.txt' or die $!;


  my @matriz=<INFILE>;
  close INFILE;
    print " Matriz desordenada \n\n @matriz\n\n";
      print " Matriz ordenada \n\n";
#ordenar a matriz
      foreach my $linha (@matriz){
 chomp $linha;
 my @numeros =  split " ", $linha;
 my @matriz_ordenada = sort @numeros;
 foreach my $numeros_ordenados (@matriz_ordenada) {
     print " $numeros_ordenados "
    }
print "\n";
}
exit;  


Output do script abaixo:

Matriz desordenada

 03 16 15 11 10 06 21 08 14 01 09 24 19 18 20
 24 22 13 03 05 21 17 18 19 20 04 11 02 25 14
 05 20 15 04 09 07 22 13 24 16 11 21 01 10 14
 03 07 24 19 08 01 11 23 22 14 16 15 02 25 18
 04 06 12 22 07 21 20 09 15 03 14 24 10 18 02
 22 18 03 08 04 21 19 06 02 25 23 10 09 16 15
 10 21 25 01 22 18 13 02 16 06 07 14 08 19 09
 17 04 20 21 16 10 19 13 12 03 22 23 25 14 08
 04 14 25 08 23 05 13 03 01 10 02 07 20 06 09
 08 24 15 23 02 18 11 21 25 20 17 14 22 05 10
 15 17 08 16 11 24 14 22 05 23 02 13 06 03 10

 Matriz ordenada

01 03 06 08 09 10 11 14 15 16 18 19 20 21 24
02 03 04 05 11 13 14 17 18 19 20 21 22 24 25
01 04 05 07 09 10 11 13 14 15 16 20 21 22 24
01 02 03 07 08 11 14 15 16 18 19 22 23 24 25
02 03 04 06 07 09 10 12 14 15 18 20 21 22 24
02 03 04 06 08 09 10 15 16 18 19 21 22 23 25
01 02 06 07 08 09 10 13 14 16 18 19 21 22 25
03 04 08 10 12 13 14 16 17 19 20 21 22 23 25
01 02 03 04 05 06 07 08 09 10 13 14 20 23 25
02 05 08 10 11 14 15 17 18 20 21 22 23 24 25
02 03 05 06 08 10 11 13 14 15 16 17 22 23 24

Um comentário:

  1. como seria se fosse para ordenar nao só as linhas mas tambem as culnas?

    ResponderExcluir