|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexander Babanov 2:5020/5609.69 11 Apr 2001 08:08:23 To : Stephen V Avdeyev Subject : Re: способ отсортировать массив строк по произвольному алфавиту --------------------------------------------------------------------------------
Юґullo Stephen!
SA> подскажите, плиз, более-менее эффективный способ отсортировать массив
SA> строк по произвольному алфавиту, типа:
SA> $abc = 'абвгдabcde012345'; # задали алфавит
SA> @array = ('аббав1', аббавdce', 'abcde'); # задали массив
SA> @array = sort {как-то использовать $abc} @array; # отсортировали
SA> чтобы на выходе получить:
SA> (аббавdce, аббав1, abcde)
Сделай tr/// строк (либо на лету, либо заранее) к стандартному алфавиту,
т.е. примерно так:
$abc = reverse join '', 'a'..'z';
$tr1 = "tr/$abc/\0-\377/";
$tr2 = "tr/\0-\377/$abc/";
@a = ( 'abra', 'dabra', 'shvabra', 'kadabra' );
map { eval $tr1 } @a;
@a = sort @a;
map { eval $tr2 } @a;
print join "\n", @a;
Либо читай perldoc perllocale в районе LC_COLLATE до посинения ;)
CYa!!!
ЪДВїЪДВВВДДДщщъъ ЪДВВВДї ЪїЪДВДДДДДДДДщщъъ ЪДДДД 2:5020/5609.69 ДДДї
іВіАґДЕ ґBabanov іВі ґВі іАґВіST BERSERKER і babanov@earthlink.net і
... Еще наше поколение будет жить при Виагре! [предп. из писем Ильича к HКК]
---
* Origin: Our governor can beat up your governor! (2:5020/5609.69)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/47303ad45bc3.html, оценка из 5, голосов 10
|