|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexander Babanov 2:5020/5609.69 24 Apr 2001 18:54:37 To : Yuriy Kaminskiy Subject : Re: Perl:10% из массива -------------------------------------------------------------------------------- Юґullo Yuriy! AB>> Да, алгоритм со случайными числами добавляет нетранзитивность, _но_ AB>> это нигде не играет ;) почемучто нормальный алгоритм не будет AB>> проверять, а не HA$&%БЫВАЕТ (в смысле - cheats) ли его пользователь, AB>> подсовывая нетранзитивную операцию сравнения. YK> Именно потому, что он не проверяет (а как он это может сделать :)?), Да на раз. Обычно, алгоритмы сортировки учитывают, что из a > b and b > c следует a > c и никогда не проверяют так ли это. Хочется - проверь a <= c, никто не запрещает. YK> подсовывание нестабильной функции чревато непредсказуемыми YK> последствиями. Пример покажешь? YK>> Вполне возможно, что результатом sort {rand(2)-1} 1..5 выдаст YK>> результат (1, 1, 1, "ху^ тебе", 5). Или зависнет. Или попортит YK>> случайные области памяти, в результате чего выкинет корку в YK>> совершенно другом месте. AB>> По первому случаю, пожалуй, посоветую обратится к хирургу ;) YK> К хирургу нужно обращаться тому, кто пишет sort {rand(3)-1} ... и тем YK> самым прямо нарушает спецификацию функции sort. И что теперь, большей половине japh'ов вешаться идти? :) IMHO, если ты работаешь с языком и зашитыми в него алгоритмами как сторонний юзверь - следуй спецификации, это правильный и наиболее застрахованный метод. Знаешь больше - используй, ветер тебе в кривую спину ;) Мне прием понравился, тебе - нет, все в порядке, продолжаем заниматься своим делом... AB>> Вас там что, не учат как писать устойчиво работающие программы? AB>> Впрочем, чего спрашиваю, видно - не учат... YK> Создание "устойчиво работающих программ" прямо противоречит "нарушению YK> требований на передаваемые параметры". Тем более, что проверить YK> "правильность" поведения произвольно подсунутой функции сравнения YK> алгоритмически невозможно. Вообще, "results are not well-defined" означает, что не гарантируется правильность возвращаемых результатов, а вовсе не то, что будет портится стек или в листе будут возникать левые "xy^ тебе" или что там у тебя. Учите язык, Юра, буржуинский, в смысле, оно рулезъ. YK> PS Да, в perl5005delta сказано, что они теперь используют собственную YK> функцию сравнения, и по переполнению стека оно не свалится. Hо это YK> вовсе не гарантирует других возможных гадостей. Плюс к тому, в YK> спецификации требование на "правильность" функции сравнения сохранено. ditto 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/47303ae6167f.html, оценка из 5, голосов 10
|