Thread Präfixe aus Liste herausarbeiten
(11 answers)
Opened by Philipp at 2012-01-30 22:06 Guest Philipp Das kann man iterativ oder per Rekursion lösen, eine Variante mit temporärem Array ginge so (ungetestet): Code (perl): (dl
)
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 use warnings; use strict; my @data = qw( # ... ); my @new; my @data_tmp = @data; while (1) { my %test; @new = (); for my $item (@data_tmp) { next if $item !~ /^\d{2,}$/; my $suffix = chop($item); $test{$item}{$suffix}++; } for my $base (keys %test) { if (scalar(keys %{$test{$base}}) == 10) { push @new, $base; } else { push @new, $base.$_ for keys %{$test{$base}}; } } last if $#new == $#data_tmp; @data_tmp = @new; } print "$_\n" for sort @new; Allerdings wird die array-Kopie jedesmal neu erzeugt, was bei richtig großen arrays ineffizient ist. Du musst auch folgendes bedenken: Nimm die Reihe Die wird dann auf ein Element (12) reduziert. Willst Du das? Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
|