КИТА unofficial
Ноябрь 26, 2024, 07:59:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   ПРАВИЛА Помощь WIKI PDA Войти Регистрация  


Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: "Искусство программирования" (задача 1)  (Прочитано 33687 раз)
0 Пользователей и 1 Гость смотрят эту тему.
grimgav
↑ так меня зовут, а это я говорю →
Просто гламурный
Проректор
*****

Карма: +161/-17
Offline Offline

Пол: Мужской
Награды:
I место в фотоконкурсе \
Сообщений: 4636


не ^i^


« Ответ #20 : Февраль 09, 2007, 04:20:24 »

Оффтоп: от увиденного выше вспомнилось How the way people code "Hello World" varies depending on their age and job.
Записан

· Я русский ·
vimmax
Модератор
Декан
*****

Карма: +42/-3
Offline Offline

Пол: Мужской
Награды:
лучшая гитара мира
Сообщений: 1713


♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪


« Ответ #21 : Февраль 09, 2007, 04:54:05 »

BODROV - Ответ#19 - та время засекать не надо. Просто писать в виде кода достаточно.

Данный ответ не зависит от величины переменной, т.е. скорость проверки будет одинаковой как для 4, так и для 1024. Но в моем ответе всего 3 операции.
а в твоем ((x-1) xor x) = ((x shl 1)-1)    -  5 операций.

Надо еще минимизировать.
Записан

♪♪ ♫  LET FOREVER BE  ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #22 : Февраль 09, 2007, 05:17:09 »

а для
BODROV - Ответ#19 - та время засекать не надо. Просто писать в виде кода достаточно.

Данный ответ не зависит от величины переменной, т.е. скорость проверки будет одинаковой как для 4, так и для 1024. Но в моем ответе всего 3 операции.

А для 2^(10^1024)? )))
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
BODROV
Mодератор
Доцент
*****

Карма: +37/-1
Offline Offline

Пол: Мужской
Сообщений: 550


хде я?


« Ответ #23 : Февраль 09, 2007, 05:30:23 »

хух.... кажись родил.....
Цитировать
(x and (x-1)) = 0
Записан
vimmax
Модератор
Декан
*****

Карма: +42/-3
Offline Offline

Пол: Мужской
Награды:
лучшая гитара мира
Сообщений: 1713


♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪


« Ответ #24 : Февраль 09, 2007, 06:08:20 »

BODROV - Ответ #23 -> ну родил так родил!!! отлично, правильный ответ.
BODROV +1.

только мой вариант C, но это то же самое:
#define isPower2(x)   ( !( (x) & ((x)-1) )  )

Так'с, теперь когда известен правильный ответ, будем обсуждать вопрос о скорости выполнения этого кода для различных типов данных и различных величин?
Записан

♪♪ ♫  LET FOREVER BE  ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
Tuomas
Магистр
***

Карма: +8/-0
Offline Offline

Пол: Мужской
Награды:
3 место в фотоконкурсе \
Сообщений: 290


Радиофинн


« Ответ #25 : Февраль 09, 2007, 07:57:43 »

Сначала укажите область практического применения данного примера
Записан

-Жизнь всегда такая жестокая? Или только когда маленький?
-Она всегда жестокая... Платок можешь оставить себе.
Alder
Администратор
Проректор
*****

Карма: +331/-16
Offline Offline

Пол: Мужской
Награды:
За II место в конкурсе поэзии (весна-2007)2 место в фотоконкурсе \За II место в фотоконкурсе \3 место в фотоконкурсе \2 место в фотоконкурсе \Лучший знаток музыки 2009Лучший знаток музыки 2010
Сообщений: 11224


just for fun


WWW
« Ответ #26 : Февраль 09, 2007, 08:46:25 »

Сначала укажите область практического применения данного примера
Да где угодно,но особенно такая эффективность нужна при программировании для микроконтроллеров (ИМХО)
Записан

"There are things known and there are things unknown, and in between are the doors..." (Jim Morrison)
Storm
Верховный
Администратор
Аспирант
*****

Карма: +29/-0
Offline Offline

Пол: Мужской
Сообщений: 484



« Ответ #27 : Февраль 09, 2007, 08:55:35 »

BODROV - Ответ #23 -> ну родил так родил!!! отлично, правильный ответ.
BODROV +1.

только мой вариант C, но это то же самое:
#define isPower2(x)   ( !( (x) & ((x)-1) )  )

Так'с, теперь когда известен правильный ответ, будем обсуждать вопрос о скорости выполнения этого кода для различных типов данных и различных величин?
Как говорится, классика...

На ассемблер это развернется в хз скоко команд в зависимости от разрядности используемого процессора и разрядности переменной х.

ЗЫ: Есть хорошая книга "Алгоритмические трюки для программистов", там большая часть таких изгибов ума разобрана от и до.
Записан

Только две вещи бесконечны: вселенная и тупость, и я еще не уверен по поводу вселенной. (Альберт Эйнштейн)
----------------------------------------------------
"There are two major products that came out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence." (с) Jeremy S. Anderson

Проходит ирландец мимо паба....
vimmax
Модератор
Декан
*****

Карма: +42/-3
Offline Offline

Пол: Мужской
Награды:
лучшая гитара мира
Сообщений: 1713


♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪


« Ответ #28 : Февраль 12, 2007, 10:49:56 »

Правильно сказал Alder, данная эффективность и прочие похожие трюки подходят при embedded программировании для контроллеров и мобильных систем.

Но не все знают, что подобные трюки любят спрашивать программисты при собеседовании на работу. Так что, советую всегда хранить в голове.
Записан

♪♪ ♫  LET FOREVER BE  ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #29 : Февраль 12, 2007, 11:11:26 »

А еще, также возможно не все знают, что множество дефайнов по сути - это источник проблем, так как не осуществляется никакой проверки типов/параметров и при достаточно большом размере проекта множество дефайнов делают развитие проекта непредсказуемым.
Вобщем, фтопку дефайны как и оператор goto.
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
vimmax
Модератор
Декан
*****

Карма: +42/-3
Offline Offline

Пол: Мужской
Награды:
лучшая гитара мира
Сообщений: 1713


♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪


« Ответ #30 : Февраль 12, 2007, 11:30:52 »

Вобщем, фтопку дефайны как и оператор goto.
Нельзя так резко отзываться об инструментах программирования. В ANSI C нет понятия inline функций, поэтому использование #define макроса вместо функции экономит стековую память и скорость вызова (за счет макроподстановки).
Записан

♪♪ ♫  LET FOREVER BE  ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #31 : Февраль 12, 2007, 11:34:56 »

Нельзя так резко отзываться об инструментах программирования. В ANSI C нет понятия inline функций, поэтому использование #define макроса вместо функции экономит стековую память и скорость вызова (за счет макроподстановки).
Я же написал для проектов достаточно большого размера и сложности. Для простеньких программ - ради Бога, как и вышеупомянутый оператор, справедливо раскритикованный много лет назад одним из уважаемых профи.
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
vimmax
Модератор
Декан
*****

Карма: +42/-3
Offline Offline

Пол: Мужской
Награды:
лучшая гитара мира
Сообщений: 1713


♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪


« Ответ #32 : Февраль 12, 2007, 11:44:34 »

Sochin - а что для тебя есть "проектов достаточно большого размера и сложности" ? Например проект из 231 исходника для гигабитного маршрутизатора MARVELL серии ExMxPm является достаточно большим и сложным? (кстати, он еще в продажу не поступил)

Я думаю ты бы не обрадовался если бы маршрутизатор твоей сети работал на 5% медленнее, чем сейчас Улыбка
Записан

♪♪ ♫  LET FOREVER BE  ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
Tuomas
Магистр
***

Карма: +8/-0
Offline Offline

Пол: Мужской
Награды:
3 место в фотоконкурсе \
Сообщений: 290


Радиофинн


« Ответ #33 : Февраль 12, 2007, 03:10:15 »

действительно, от goto уже многие отказались, и скоро, я думаю, этот оператор канет в Лету.
Записан

-Жизнь всегда такая жестокая? Или только когда маленький?
-Она всегда жестокая... Платок можешь оставить себе.
mars
Магистр
***

Карма: +10/-0
Offline Offline

Награды:
За III место в фотоконкурсе \
Сообщений: 221



« Ответ #34 : Март 03, 2007, 12:23:36 »

BODROV - Ответ #23 -> ну родил так родил!!! отлично, правильный ответ.
BODROV +1.

только мой вариант C, но это то же самое:
#define isPower2(x)   ( !( (x) & ((x)-1) )  )

Так'с, теперь когда известен правильный ответ, будем обсуждать вопрос о скорости выполнения этого кода для различных типов данных и различных величин?
Хороший ответ если исключить 0.
al = х = 0 ->  00000000b
bl = x-1=-1 -> 11111111b
al and bl = 00000000b
но 0 не является степенью 2.
Записан

Мне говорили: «Ты злой», и я соглашался. Мне говорили: «Ты не злой», и я не находил возражений. Сам-то я не хотел ни добра, ни зла и даже не думал об этом. Я просто шел своим Путем, а люди потом подбирали названия для моих поступков. М.Симонс
BODROV
Mодератор
Доцент
*****

Карма: +37/-1
Offline Offline

Пол: Мужской
Сообщений: 550


хде я?


« Ответ #35 : Март 03, 2007, 12:31:13 »

но 0 не является степенью 2.
ээээээ, а разве 02 != 0 ?
Записан
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #36 : Март 03, 2007, 12:34:18 »

ээээээ, а разве 02 != 0 ?

Это квадрат нуля, а не степень двойки. )
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
BODROV
Mодератор
Доцент
*****

Карма: +37/-1
Offline Offline

Пол: Мужской
Сообщений: 550


хде я?


« Ответ #37 : Март 03, 2007, 12:42:18 »

Это квадрат нуля, а не степень двойки. )
да, протупил! Смеющийся
Записан
mars
Магистр
***

Карма: +10/-0
Offline Offline

Награды:
За III место в фотоконкурсе \
Сообщений: 221



« Ответ #38 : Март 03, 2007, 01:41:48 »

Хотелось бы первый + Улыбка))
Записан

Мне говорили: «Ты злой», и я соглашался. Мне говорили: «Ты не злой», и я не находил возражений. Сам-то я не хотел ни добра, ни зла и даже не думал об этом. Я просто шел своим Путем, а люди потом подбирали названия для моих поступков. М.Симонс
Storm
Верховный
Администратор
Аспирант
*****

Карма: +29/-0
Offline Offline

Пол: Мужской
Сообщений: 484



« Ответ #39 : Март 03, 2007, 10:36:50 »

действительно, от goto уже многие отказались, и скоро, я думаю, этот оператор канет в Лету.
в ЯВУ отказались, в Ассемблере он как был, так никуда не делся и не денется.... ибо в линейной памяти  джамп замены не имеет...
Записан

Только две вещи бесконечны: вселенная и тупость, и я еще не уверен по поводу вселенной. (Альберт Эйнштейн)
----------------------------------------------------
"There are two major products that came out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence." (с) Jeremy S. Anderson

Проходит ирландец мимо паба....
Страниц: 1 [2]  Все   Вверх
  Печать  
 
Перейти в:  

Penguins Counter Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS! Internetmap
Страница сгенерирована за 0.081 секунд. Запросов: 37.