Perl e molti altri linguaggi di programmazione utilizzano gli array per memorizzare un elenco di dati . Tuttavia, Perl supporta anche una struttura di dati specifico chiamato un hash . A Perl associa un particolare valore hash con una chiave . Un esempio è l' hash { gen = > 31 , aprile = > 30 } , in cui un mese è una chiave e un numero di giorni è un valore . Un hash Perl rende possibile lo sviluppo di un semplice algoritmo per rimuovere i duplicati da un array . La corrispondente subroutine ha meno di dieci comandi in Perl .
Istruzioni Creazione di un sottoprogramma " Remove_duplicates ; " di un algoritmo di
1
ottenere dati di array e di dichiarare un hash " voci ". Un altro array chiamato " new_array " conterrà i dati non duplicati . Punti da 1 a 5 sono illustrati con il codice Perl dato nella sezione 2 , punto 3.
2
Assegnare tutti gli elementi dell'array come chiavi hash e assegnare valori di hash uguale a 1 per tutti i tasti .
3
ciclo su tutti gli elementi dell'array e verificare il valore hash associato a questo elemento .
4
Se il valore hash è 1 (vedi punto 3 ), allora la elemento è originale o non duplicati e dovrebbe essere aggiunto alla " new_array . " Nello stesso tempo, questo elemento è segnato , cioè il valore di hash passa a 0
5
Se il valore hash è 0 , allora questo elemento è stato già incontrato , . Cioè è duplicato e saltato < . br>
Esempio e Perl Programma
6
rimuovere i duplicati dalla matrice con elementi ( 1 2 6 7 9 2 1 2 6) .
7 < p > Stampa array iniziale e finale ( senza duplicati ) economici 8
# Sezione 1 # Subroutine Begins
sub remove_duplicates {my ( $ array , $ new_array ) = @ _; . # Passo 1 . Leggi le voci % arraymy iniziali = () ; # Step 1 . Dichiarare l'hash
foreach ( @ $ array ) { next if exists $ voci { $ _ } ; $ voci { $ _ } = 1; # Step 2 }
foreach ( $ array @ ) { # Passo 3 . Il ciclo di tutti matrice elementsif ( $ voci { $ _ } ) { # Punto 5 . L'elemento viene saltato se il valore hash è 0.push @ $ new_array , $ _ ; # Fase 4 . Aggiungere un elemento al nuovo array solo se il valore hash è di $ 1 voci { $ _ } = 0; # Fase 4 . L'elemento è contrassegnato cioè modificare il valore hash a 0 . }
}}
# Subroutine Ends
# Sezione 2MY $ array = [ qw ( 1 2 6 7 2 9 1 2 6) ] ; # Step1 : un esempio arraymy $ new_array = []; # remove_duplicates ( $ array , $ new_array ) ; print " @ $ array \\ n"; # Passo 2 . Stampa arrayprint iniziale " @ $ new_array \\ n"; # stampa arrayexit finale ;