Perl :: Aufgabe #3 :: Lösung #1

5 Lösungen Lösungen öffentlich
#3

Schnittmenge von 2 Arrays

Anfänger - Perl von Gustl - 06.08.2012 um 22:46 Uhr
Schreiben Sie ein Skript, das Sie auffordert 2 Integer-Arrays einzugeben. Aus diesen 2 Arrays soll dann ein drittes Array erzeugt werden, das nur die Elemente enthält, die in beiden Arrays vorkommen. Also die Schnittlänge dieser beiden Arrays.
#1
vote_ok
von progdoc (2220 Punkte) - 12.08.2012 um 02:35 Uhr
Quellcode ausblenden Perl-Code
#!/usr/bin/perl
use strict ;
use warnings ;

sub intersection { 
      my ( $firstarray , $secondarray ) = @_ ;
      my %firsthash ;
      my %secondhash ;
      foreach my $element ( @{$firstarray} ) {
	 $firsthash{ $element }++ ;
      }
      foreach my $element ( @{$secondarray} ) {
	    $secondhash{ $element }++ ;
      }
      my @intersection ;
      foreach my $element ( keys %firsthash ) {
	 if ( exists $secondhash{ $element } ) {
	    my $minimum = $firsthash{ $element } < $secondhash{ $element } ? 
	      $firsthash{ $element } : $secondhash{ $element } ;
	    for ( 1..$minimum ) {
	       push ( @intersection , $element ) ;
	    }
	 }
      }
      return @intersection ;
}

my @array = qw ( Berlin Athen Amsterdam Moskau Berlin Berlin ) ;
my @array2 = qw ( Berlin Warschau Paris Berlin ) ;
foreach my $city ( intersection ( \@array , \@array2 ) ) {
   print "$city\n" ;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben