|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Dmitry E. Oboukhov 2:5004/75.151 14 Dec 2006 19:21:36 To : Nikolay Pichtin Subject : Отсортировать не могу --------------------------------------------------------------------------------
DO>> sort {
DO>> my @fa=split(/\./, $a);
DO>> my @fb=split(/\./, $b);
NP>
DO>> unshift @fa, '0' while(@fa <@fb);
DO>> unshift @fb, '0' while(@fa >@fb);
NP>
DO>> for (my $i=0; $i<@fa; $i++)
DO>> {
DO>> $fa[$i] eq $fb[$i] and next;
DO>> return $fa[$i] cmp $fb[$i];
DO>> }
DO>> return 0;
DO>> } @list;
NP>
DO>> что-то в этом духе.
DO>> по необходимости заменить cmp на <=> (если надо только цифры)
DO>> а eq соответственно на ==
NP>
DO>> ну и отладитьпотому что я прямо тут написал
NP>
NP> Hи чего не получается.
видимо потому что мой алгоритм сравнения двух строк отличается от того
что тебе надо (а что конкретно тебе надо я так и не понял)
насколько я понял что проблемы при сравнении короткой строки вроде .1 с
длинной вроде 1.2.3.4
ну вот я и предложил перед сравнением дополнить более короткую строку до
длинной нулями слева.
возможно тебе нужно дополнить нулями справа или не нулями а старшей
цифрой
то есть алгоритма по которому тебе надо поставить числа я не понял
совершенно, но проблему кажется понял :)
--- Mutt/1.5.13 (2006-08-11)
* Origin: Горе тому кто попал под столь медленные челюсти! (2:5004/75.151)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/3926b2f7133e.html, оценка из 5, голосов 10
|