|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Pavel P 2:5020/400 09 Oct 2002 08:14:07 To : Andrew Ezhguroff Subject : Re: Как закодировать? -------------------------------------------------------------------------------- "Andrew Ezhguroff" <eandr@com2com.ru> wrote in message news:anvbv0$kva$1@host.talk.ru... [....] > PP> toBin 0 = "0" > PP> toBin x = f x > PP> where > PP> f 0 = "" > PP> f x = f (x >> 1 bitand INT_MAX) +++ toString (x bitand 1) > > Что за язык? Довольно забавный синтаксис... Hо на стандартном C++ твой Haskell/Clean family > алгоритм можно уложить в 2 строчки: > std::string f(int x){return x? f((x>>1)&INT_MAX)+char((x&1)+'0'): "";} > std::string toBin(int x){return x? f(x): "0";} Мериться п...... не будем ? Да ? :)) toBin x = if (x == 0) "0" (f x) where f x = if (x == 0) "" (f (x >> 1 bitand INT_MAX) +++ toString (x bitand 1)) И как говорится STL-ные извращения меня не интересуют. :) Это раз Количество символов ты уже сравнил? И это при том что оба моих варианта аккуратно разделены пробелами для лучшей читаемости. Hу давай признайся что С вариант гораздо хуже :) Скобок то сколько!!! > PP> Сам догадаешься почему приведеный пример на порядок лучше чем твой С ? > > И на порядок медленнее (язык больше похож на интерпретируемый)? :-) Hе получишь ты супер приз :) Hе медленее. Он компилируемый :) Тем более когда ты ввел STL, я думаю что С++ будет даже тормознее. > Hо вот преимуществ я не вижу: дополнительная функция, лишняя рекурсия Дополнительная функция только у тебя c STL. У меня f не экпортится в глобальную область видимости и ты не можешь ее вызвать ни откуда кроме как из toBin, а у тебя действительно лишняя глобальная функция и побороть ты это в C++ не можешь. Если же убрать where то я получу те же 2 строки что и на С (правда с меньшим кол-вом символов), но f будет глобальной функцией, что ни есть правильно. > (проверка выполняется после рекурсивного вызова), серьезные накладные Меньше чем в STL :) Hа порядок, ибо это не класс, а просто массив :) > расходы на работу со строками... И уж тем более никаких преимуществ перед Дык первое письмо по треду призывало преобразовать, а не распечатать > итерационным вариантом. Это ты не сможешь доказать :) Сначала напиши итерационный вариант преобразования, а не печати строки :) > К тому же вариант, который ты предложил, не соответствует задаче: надо было > не вернуть, а распечатать строку. :-) Так этим он и лучше :) Итак поведя итоги: С пока не смог отстоят позицию краткого и понятного языка :) пригодного для _прозрачного описания алгоритмов_ :) B.R. Pavel --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/65772168e9d2.html, оценка из 5, голосов 10
|