/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Sort af array
Fra : Morten Skriver


Dato : 25-04-01 14:30

Hej,

Jeg har et array indeholdende tekst stringe af følgende format:

@a=("ab1.foo.bar","ab10.foo.bar","ab2.foo.bar");

Dette vil jeg gerne have sorteret sådan, at output'et set
således ud:

ab1.foo.bar, ab2.foo.bar, ab10.foo.bar

Hvordan kan dette gøres ?

/Morten

--
Morten Skriver
Email: morten@skriver.dk

 
 
Christian Vandsø (25-04-2001)
Kommentar
Fra : Christian Vandsø


Dato : 25-04-01 14:59

On 25 Apr 2001 13:29:48 GMT, morten@skriver.dk (Morten Skriver) wrote:

>Hej,
>
>Jeg har et array indeholdende tekst stringe af følgende format:
>
>@a=("ab1.foo.bar","ab10.foo.bar","ab2.foo.bar");
>
>Dette vil jeg gerne have sorteret sådan, at output'et set
>således ud:
>
>ab1.foo.bar, ab2.foo.bar, ab10.foo.bar

Kan sikkert golf'es lidt vha map, men en quick and dirty løsning er:

#!/usr/bin/perl -w

use strict;

my @string = ("ab1.foo.bar","ab10.foo.bar","ab2.foo.bar");

my %sorted;

foreach (@string) {
$sorted{$1}=$_ if (/\w\w(\d+)/);
}

my @keys = sort {$a<=>$b} keys %sorted;

foreach (@keys) {
print "$sorted{$_}\n";
}


/Christian



--
sub BROOTHAL::TIESCALAR{ bless \my $child =>"BOFH"};$_='5O1v3v5y9)1b7u2q4x1i0e3u2"3S9n5w7s6&7o7h8k1l6k3u3/';s/(.)(.)/pack('C',ord($2)-$1)/eg; tr/A-Za-z/N-ZA-Mn-za-m/;chop and pop or shift and die or tie my $shoe=>qq 'BROOTHAL';tr/A-Za-z/N-ZA-Mn-za-m/;print;

Lars Balker Rasmusse~ (25-04-2001)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 25-04-01 15:00

morten@skriver.dk (Morten Skriver) writes:
> Jeg har et array indeholdende tekst stringe af følgende format:
>
> @a=("ab1.foo.bar","ab10.foo.bar","ab2.foo.bar");
>
> Dette vil jeg gerne have sorteret sådan, at output'et set
> således ud:
>
> ab1.foo.bar, ab2.foo.bar, ab10.foo.bar
>
> Hvordan kan dette gøres ?

Er de altid "ab" tal ".foo.bar"? For så er følgende nok.

@sorteret = map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [ $_, /(\d+)/ ] } @a;

Hvis de kan være f.eks. "ab1.foo.bar", "ab10.foo.bar", "bc1.foo.bar":

@sorteret = map { $_->[0] }
sort { $a->[1] cmp $b->[1] || $a->[2] <=> $b->[2] }
map { [ $_, /(\D+)(\d+)/ ] } @a;
--
Lars Balker Rasmussen "Special is bad."

Morten Skriver (25-04-2001)
Kommentar
Fra : Morten Skriver


Dato : 25-04-01 15:02

On 25 Apr 2001 16:00:12 +0200, Lars Balker Rasmussen wrote:
>
> Er de altid "ab" tal ".foo.bar"? For så er følgende nok.
>

Nope, formatet er ukendt antal "bogstaver" tal ".foo.bar"

/Morten

--
Morten Skriver
Email: morten@skriver.dk

Lars Balker Rasmusse~ (25-04-2001)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 25-04-01 15:08

morten@skriver.dk (Morten Skriver) writes:
> On 25 Apr 2001 16:00:12 +0200, Lars Balker Rasmussen wrote:
> >
> > Er de altid "ab" tal ".foo.bar"? For så er følgende nok.
>
> Nope, formatet er ukendt antal "bogstaver" tal ".foo.bar"

Så virker mit andet forslag. (Og Christians fejler på ukendt antal.)
--
Lars Balker Rasmussen "Special is bad."

Morten Skriver (25-04-2001)
Kommentar
Fra : Morten Skriver


Dato : 25-04-01 15:12

On 25 Apr 2001 16:07:37 +0200, Lars Balker Rasmussen wrote:
>>
>> Nope, formatet er ukendt antal "bogstaver" tal ".foo.bar"
>
> Så virker mit andet forslag. (Og Christians fejler på ukendt antal.)

jeps, takker for hjælpen

/Morten

--
Morten Skriver
Email: morten@skriver.dk

Thorbjoern Ravn Ande~ (25-04-2001)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 25-04-01 16:23



Lars Balker Rasmusse~ (25-04-2001)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 25-04-01 16:30

Thorbjoern Ravn Andersen <ravn@unixsnedkeren.dk> writes:
> On 25 Apr 2001, Lars Balker Rasmussen wrote:
> > Er de altid "ab" tal ".foo.bar"? For så er følgende nok.
> >
> > @sorteret = map { $_->[0] }
> > sort { $a->[1] <=> $b->[1] }
> > map { [ $_, /(\d+)/ ] } @a;
>
> Ok, Lars er gået i Randal-mode. Så leger jeg Tom:
>
>    http://www.perl.com/CPAN/doc/FMTEYEWTK/sort.html

Efter seks år (som tiden dog flyver), vil jeg hævde at Schwartzian
Transform er blevet kanon...
--
Lars Balker Rasmussen "Special is bad."

Thorbjoern Ravn Ande~ (25-04-2001)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 25-04-01 16:39



Lars Balker Rasmusse~ (25-04-2001)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 25-04-01 16:48

Thorbjoern Ravn Andersen <ravn@unixsnedkeren.dk> writes:
> On 25 Apr 2001, Lars Balker Rasmussen wrote:
> > Efter seks år (som tiden dog flyver), vil jeg hævde at Schwartzian
> > Transform er blevet kanon...
>
> Det ændrer vel ikke på at den er svær at forstå første gang man ser den?

Det er da klart som Ramlösa :)
--
Lars Balker Rasmussen "Special is bad."

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste