Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6978[/thread]

längsten string in array finden



<< >> 6 Einträge, 1 Seite
dax42
 2005-05-10 21:56
#54729 #54729
User since
2004-06-16
24 Artikel
BenutzerIn
[default_avatar]
Hallo,

irgendwie kommt mir die Frage ja doof vor, klingt so einfach...
Aber ich würde es gern vermeiden, einen loop zu verwenden. Gibt es eventuell eine elegantere Lösung?

Problem: ich habe ein 2D-array, dabei steht in jeder Zeile an der selben Position ein String. Also zum Bsp $2Dstrings[0][3], $2Dstrings[1][3], $2Dstrings[2][3] sind alles Strings.

Ich würde gern die Länge des längsten aller da gespeicherten Strings wissen. Möglichst ohne zu loopen...

Danke schon mal für die Hilfe!
Ronnie
 2005-05-10 22:20
#54730 #54730
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=dax42,10.05.2005, 19:56]Ich würde gern die Länge des längsten aller da gespeicherten Strings wissen. Möglichst ohne zu loopen...[/quote]
Hast du Kristallkugeln in Erwägung gezogen?
ptk
 2005-05-10 22:25
#54731 #54731
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ohne Loop geht es nicht. Du kannst aber Hilfsfunktionen wie reduce verwenden:
Code: (dl )
1
2
use List::Util qw(reduce);
$longest = reduce { length $a > length $b ? $a : $b } @array;
Crian
 2005-05-11 19:48
#54732 #54732
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Elegant =) Allerdings funktioniert das nur, wenn Du mehr als ein Element hast, dass Du da vergleichst (könnte ja sein, dass dieser Fall aus irgendwelchen Gründen mal vorkommt). Dann bekommst Du nämlich das eine Element und nicht siene Länge zurückgeliefert.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
betterworld
 2005-05-11 21:55
#54733 #54733
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=Crian,11.05.2005, 17:48]Elegant =) Allerdings funktioniert das nur, wenn Du mehr als ein Element hast, dass Du da vergleichst (könnte ja sein, dass dieser Fall aus irgendwelchen Gründen mal vorkommt). Dann bekommst Du nämlich das eine Element und nicht siene Länge zurückgeliefert.[/quote]
Warum sollte es bei einem einzigen Element nicht funktionieren? Die Dokumentation sagt:
Quote
If LIST only contains one element then that
element is returned and BLOCK is not executed.
Crian
 2005-05-12 13:40
#54734 #54734
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Stimmt, ich hab mich verguckt. Ich dachte es sollte die Länge zurückgegeben werden und nicht das Element. Das würde dann nämlich nicht funktionieren.\n\n

<!--EDIT|Crian|1115890855-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 6 Einträge, 1 Seite



View all threads created 2005-05-10 21:56.