Thread Laufende Nummer eines Keys finden (9 answers)
Opened by bianca at 2011-03-01 13:06

clms
 2011-03-01 14:28
#146146 #146146
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
2011-03-01T12:38:53 bianca
Danke für die Antwort. Ich bin überrascht, dass man tatsächlich eine Schleife ansetzen muss. Das wollte ich mir eigentlich sparen, weil ich die Aufgabe an sich für viel zu profan halte :)
Gibt es da garnichts mit List::Util oder map() oder soetwas "perliges"? Ich würde auch immer gern an soetwas dazulernen.

List::Util::first_index() gibt es nicht (zumindest bei Perl 5.8.8)

Mir fällt höchstens folgendes ein:
Code (perl): (dl )
1
2
3
4
5
use List::Util qw(first);

my $i = 0;
my @sortedarray = map {[$_,$i++]} sort keys(%hash);
my $nr = (first {$_->[0] >= $test} @sortedarray)->[1];
(untested)

Da fehlt die Schleife im User-Code (aber first wird sie trotzdem ausführen).

Wenn es Dir auf die Effizienz ankommt, würde ich eher die Tatsache nutzen, dass das Array sortiert ist. Du kannst also die Suche nach dem passenden Index beschleunigen, wenn Du die Indices nicht der Reihe nach durchgehst sondern in der Mitte anfängst.

View full thread Laufende Nummer eines Keys finden