Leser: 21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
my @words = ( # WortA: { map {$_ => 1} qw/haus tier garten/ }, # WortB: { map {$_ => 1} qw/straße auto reifen/ }, # WortC: { map {$_ => 1} qw/pc monitor tastatur maus/ }, ); my @sentence = qw/haus auto maus/; my $legal = 1; for my $i (0 .. $#sentence) { unless (exists $words[$i]->{$sentence[$i]}) { $legal = 0; last; } } print $legal ? "legal\n" : "illegal\n";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#!/usr/bin/perl use strict; use warnings; # Die Wörter mit ihrer zulässigen Position my %wort = ( 'haus' => 1 , 'tier' => 1 , 'garten' => 1 , 'straße' => 2 , 'auto' => 2 , 'reifen' => 2 , 'pc' => 3 , 'monitor' => 3 , 'tastatur' => 3 , 'maus' => 3 ); # Beispieleingaben my @test = ( 'haus reifen maus' , 'auto tier maus' , 'garten pc' ); TEST: for (@test) { my @input = split / /, $_; my $lastval = 0; for (@input) { # Wenn Lücken erlaubt sind (s.o. drittes Beispiel) if ($wort{$_} and $wort{$_} > $lastval) { # Wenn keine Lücken erlaubt sind (s.o. drittes Beispiel) #if ($wort{$_} and $wort{$_}-$lastval==1) { $lastval = $wort{$_}; next; } else { print "Falsche Reihenfolge: @input\n"; next TEST; } } print "Richtige Reihenfolge: @input\n" }