Perl e muitas outras linguagens de programação usar matrizes para armazenar uma lista de dados. No entanto , Perl também suporta uma estrutura de dados específica chamada hash. Um hash Perl associa um determinado valor com uma chave. Um exemplo é o hash { Janeiro = > 31 , Apr = > 30 } , em que um mês é uma chave e um certo número de dias, é um valor . Um hash Perl torna possível o desenvolvimento de um algoritmo simples para remover duplicatas de uma matriz. A sub-rotina correspondente tem menos de dez comandos em Perl. Instruções
Criando uma sub-rotina " Remove_duplicates ; " " . Entradas " um algoritmo
1
Obter dados da matriz e declarar um hash Outra matriz chamada " new_array " conterá os dados não- duplicados. Passos 1 a 5 são ilustrados com o código Perl dada na Seção 2, Passo 3 .
2
Atribuir todos os elementos da matriz como as chaves de hash e atribuir valores de hash iguais a 1 para todas as chaves .
3
loop através de todos os elementos do array e verificar o valor de hash associado a este elemento.
4
Se o valor de hash é 1 ( consulte a Etapa 3 ), então o elemento é original ou não duplicada e deve ser adicionado ao " new_array . " Ao mesmo tempo, este elemento é marcado ; . Isto é, o valor de hash muda para 0
5
Se o valor de hash é 0, então este elemento já foi encontrado; . Ou seja, ele é duplicado e ignorados
Exemplo e Programa Perl
6
Remover duplicados a partir da matriz com os elementos ( 1 2 6 7 2 9 1 2 6).
7
Imprimir matrizes iniciais e finais ( sem duplicação)
8
# Seção 1 # sub-rotina começa
sub remove_duplicates { my ($ array, $ new_array ) = @ _ ; # Etapa 1 . Leia entradas iniciais arraymy % = (); # Passo 1 . Declare o hash
foreach ( @ $ array ) { próximo se houver $ entradas { $ _ } ; $ entradas { $ _ } = 1; # Passo 2 }
foreach ( @ $ array ) { # Passo 3 . Loop através de todos elementsif array ( $ entradas { $ _ } ) { # Passo 5 . O elemento é ignorado se o valor hash é 0.push @ $ new_array , $ _ ; # Passo 4 . Adicione um elemento para a nova matriz apenas se o valor hash é 1 $ entradas { $ _ } = 0; # Passo 4 . O elemento é marcado ou seja, alterar o valor de hash para 0. } }}
# Subrotina Termina
# Seção $ 2O My array = [ qw (1 2 6 7 2 9 1 2 6 ) ]; # Passo 1: um exemplo arraymy $ new_array = []; # remove_duplicates ( $ array , $ new_array ); print " @ $ array \\ n"; # Passo 2 . Imprimindo arrayprint inicial "@ $ new_array \\ n"; # imprimir arrayexit final;