Schrift
[thread]9230[/thread]

Array mit Datumswerten sortieren

Leser: 1


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
MartinR
 2007-07-26 16:01
#78916 #78916
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
HI,

ich habe ein Array mit (deutschen) Datumswerten.

Code: (dl )
my @Datum = qw( 12.4.2007 1.2.2007 31.8.2007 05.05.2005 );


Gibt es hier eine elegante Möglichkeit diese nach Datum zu sortieren?
renee
 2007-07-26 16:09
#78917 #78917
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
@Datum = 
map{ $_->[0] }
sort{ $a->[3] <=> $b->[3] ||
$a->[2] <=> $b->[2] ||
$a->[1] <=> $b->[1] }
map{ [$_,split /\./, $_] }@Datum;


Erklaerung folgt spaeter...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
MartinR
 2007-07-26 16:59
#78918 #78918
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
[quote=renee,26.07.2007, 14:09]Erklaerung folgt spaeter...[/quote]
Danke wieder mal!

Und ob Du's glaubst oder nicht. Das kappier ich sogar auch mal - und funktionieren tuts auch noch ;-)

Und mit diesem Tipp aus dem Kochbuch eliminiere ich auch gleich die doppelten Einträge. Oder kann man das sogar noch verknüpfen?

my %buffer = ();
@Datum = grep { ! $buffer{$_} ++ } @Datum;
sid burn
 2007-07-26 17:15
#78919 #78919
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Doppelte Einträge würde ich lieber mit "uniq" aus List::MoreUtils aussondern.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2007-07-26 18:04
#78920 #78920
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=MartinR,26.07.2007, 14:59][...]
Und mit diesem Tipp aus dem Kochbuch eliminiere ich auch gleich die doppelten Einträge. Oder kann man das sogar noch verknüpfen?
[...][/quote]
Klar kann man ;)


Code (perl): (dl )
1
2
3
4
5
6
7
8
my %seen;
@Datum =
   map{ $_->[0] }
   sort{ $a->[3] <=> $b->[3] ||
       $a->[2] <=> $b->[2] ||
       $a->[1] <=> $b->[1] }
   map{ [$_,split /\./, $_] }
   grep{ !$seen{$_}++}@Datum;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
PerlProfi
 2007-07-26 18:12
#78921 #78921
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
[quote=sid burn,26.07.2007, 15:15]Doppelte Einträge würde ich lieber mit "uniq" aus List::MoreUtils aussondern.[/quote]
Wieso? Da wirds doch auch so gemacht:
Code: (dl )
map { $h{$_}++ == 0 ? $_ : () } @_;
sid burn
 2007-07-26 18:32
#78922 #78922
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=PerlProfi,26.July.2007, 16:12][quote=sid burn,26.07.2007, 15:15]Doppelte Einträge würde ich lieber mit "uniq" aus List::MoreUtils aussondern.[/quote]
Wieso? Da wirds doch auch so gemacht:
Code: (dl )
map { $h{$_}++ == 0 ? $_ : () } @_;
[/quote]
Die Tools in List::MoreUtils sind in C geschrieben, und sollten schneller sein.

Ansonsten warum selber schreiben wenn es schon eine Funktion gibt die genau das macht. Ist auch für jeden fremden, meiner meinung nach, deutlich lesbarer.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
pq
 2007-07-26 20:49
#78923 #78923
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=PerlProfi,26.07.2007, 16:12]Wieso? Da wirds doch auch so gemacht:
Code: (dl )
map { $h{$_}++ == 0 ? $_ : () } @_;
[/quote]
Quote
The pure-Perl implementation of these functions only serves as a fallback in case the C portions of this module couldn't be compiled on this machine.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
docsnyder
 2007-07-27 13:12
#78924 #78924
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@renee

Das letzte $_ in

Code: (dl )
[$_,split /\./, $_]

verstehe ich nicht.

Gruß, Doc
sid burn
 2007-07-27 13:24
#78925 #78925
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=docsnyder,27.July.2007, 11:12]@renee

Das letzte $_ in

Code: (dl )
[$_,split /\./, $_]

verstehe ich nicht.

Gruß, Doc[/quote]
Vielleicht ist es mit expliziten Klammern vesser zu verstehen.

Code: (dl )
 [ $_, split(/\./, $_) ] 
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2007-07-26 16:01.