AlexBausW: Sortierung von ungarischen Vokalen

Beitrag lesen

Hallo André,

Vielleicht stelle ich mich auch nur blöd an (nachdem die anderen sich schon so viel Mühe gemacht haben, bin ich ein wenig verunsichert), aber für mich sieht das nach einer Aufgabe für eine Schwartz`sche Transformation aus (ich kann natürlich auch vollkommen falsch liegen :-)

my %specchars = (
      'á' => 'a',
      'é' => 'e',
      'í' => 'i',
      'ó' => 'o',
      'ú' => 'u',
   );
my $regex = join '|', keys %specchars;

my @sorted = map  { $_->[1] }
             sort { $a->[0] cmp $b->[0] }
             map  { ( my $r = $_ ) =~ s/($regex)/$specchars{$1}/og;
                    [ lc( $r ), $_ ];
                  } @asorted_list_with_funny_characters;

Vielleicht ist das auch nicht sonderlich performant, aber es dürfte den von André Malo geforderten Bedingungen doch recht nahe kommen (Zwei Listen bzw. Schluessel-Wert-Paare, wo a) unbearbeitet, und b) nach Ascii transformierte Zeichen enthält)
Zumindest erspart es viele Funktionsaufrufe in sort(), wobei natürlich die Liste auf jeden Fall mindestens zweimal mit map() durchlaufen werden muss.

Gruß AlexBausW, der sich freut, auch einen Beitrag geleistet zu haben :-))