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
2129671

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.