Re: Как закодировать?

From
Andrew Ezhguroff ()
To
Pavel P
Date
2002-10-08T23:34:21Z
Area
RU.ALGORITHMS
From: "Andrew Ezhguroff" <eandr@com2com.ru>

Привет! "Pavel P" <vprin@indiainfo.com>  сообщил(а):

 PP> Мало ли чего нет в стандартном Паскале.

Задачи, для которых он создавался, стандартный Паскаль успешно решает.

 PP> Ты его живьем то видел?

Меня на нем 17 лет назад программированию обучали - по Йенсен&Вирт.

 PP> С его виртуальной машиной Р-кода?

Нет, с пи-кодом я непосредственно не сталкивался.

 PP> :) Люди не пишите на С :) Пишите вот так :)
 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)

Что за язык? Довольно забавный синтаксис... Но на стандартном C++ твой
алгоритм можно уложить в 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";}

 PP> Сам догадаешься почему приведеный пример на порядок лучше чем твой С ?

И на порядок медленнее (язык больше похож на интерпретируемый)? :-)

Но вот преимуществ я не вижу: дополнительная функция, лишняя рекурсия
(проверка выполняется после рекурсивного вызова), серьезные накладные
расходы на работу со строками... И уж тем более никаких преимуществ перед
итерационным вариантом.

К тому же вариант, который ты предложил, не соответствует задаче: надо было
не вернуть, а распечатать строку. :-)

С уважением, Андрей.



-- 
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
 * Origin: Talk.Mail.Ru (2:5020/400)