Perl en vele andere programmeertalen gebruiken arrays om een lijst met gegevens op te slaan . Echter , Perl ondersteunt ook een bepaalde datastructuur genoemd een hash . Een Perl hash associeert een bepaalde waarde met een sleutel . Een voorbeeld is de hash { Jan = > 31 april = > 30 } , waarbij onder een maand een sleutel en een aantal dagen een waarde . Een Perl hash maakt het mogelijk om een eenvoudig algoritme om duplicaten uit een array te verwijderen ontwikkelen. De bijbehorende subroutine heeft minder dan tien opdrachten in Perl . Instructies Het creëren van een subprogramma " Remove_duplicates ; " een algoritme 1 verkrijgen array data en verklaren een hash " inzendingen. " Andere array genaamd " new_array " zal niet- gedupliceerde data bevatten . Stappen 1 tot 5 worden geïllustreerd met de Perl- code vermeld in paragraaf 2 , stap 3 . Kopen van 2 Toewijzen alle array-elementen als de hash sleutels en hash-waarden gelijk aan 1 voor alle toetsen toewijzen . Loop 3 door alle elementen van de array en controleer de hash-waarde in verband met dit element . 4 Als de hash-waarde is 1 ( zie stap 3 ) dan de element originele of niet gedupliceerd en worden toegevoegd aan " new_array . " In dezelfde tijd dat dit element wordt gemarkeerd , dwz de wijzigingen hash-waarde op 0 5 Als de hash-waarde 0 is , dan is dit element al is opgetreden ; . Dat wil zeggen het wordt gedupliceerd en overgeslagen < . br > Voorbeeld en Perl Programma 6 Verwijder duplicaten uit de array met de elementen ( 1 2 6 7 2 9 1 2 6 ) . 7 Print eerste en laatste arrays (zonder duplicaten ) 8 # Sectie 1 # Subroutine Begint sub remove_duplicates { my ( $ array , $ new_array ) = @ _ ; . # Stap 1 . Lees initiële arraymy % entries = ( ) ; # Stap 1 . Verklaren de hash foreach ( @ $ array ) { volgende wanneer voorhanden $ data { $ _ } ; $ data { $ _ } = 1 ; # Stap 2 } foreach ( @ $ array ) { # Stap 3 . Lus door alle scala elementsif ( $ data { $ _ } ) { # Stap 5 . Het element wordt overgeslagen Als hash-waarde is 0.push @ $ new_array , $ _ ; # Stap 4 . Voeg een element aan de nieuwe array alleen als hash-waarde is 1 $ data { $ _ } = 0 ; # Stap 4 . Het element wordt gemarkeerd dwz de hash- waarde naar 0 . } } } # Subroutine Eindigt # Sectie 2MY $ array = [ qw ( 1 2 6 7 2 9 1 2 6 ) ] ; # Stap 1 : een voorbeeld arraymy $ new_array = [ ] ; # remove_duplicates ( $ array , $ new_array ) ; print " @ $ array \\ n " ; # Stap 2 . Afdrukken aanvankelijke arrayprint " @ $ new_array \\ n " ; # drukken finale arrayexit ;
|