![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#21 |
Пользователь
Регистрация: 14.07.2007
Сообщений: 40
|
![]()
Интересная задача. Нашёл решение для явы (и других языков, в которых корректно работает операция >> и есть операция ^): (i ^ (i >> 31)) — (i >> 31). В делфи подбное реализовать не полуилось. Хотя можно обойтись и без ^, но операция shr как-то неправильно работает, и вместо арифметического сдвига делает логический. (i := -4, i shr 31 = 1, хотя при арифметическом сдвиге должно быть -1).
Котэ покарает тебя, %username%!
Последний раз редактировалось Longedok; 26.06.2009 в 20:43. |
![]() |
![]() |
![]() |
#22 |
Пользователь
Регистрация: 25.06.2009
Сообщений: 39
|
![]()
Longedok, идея подобная вашей пришла в голову где-то за пол часа до вашего сообщения
![]() p.s.в моем решении, которое я придумал раньше использовалось 5 операций, но сегодня, когда я опять начал думать над этой задачей удалось придумать решение сначала из 4-х операций, а потом упростить его до 3-х.вроде короче уже нельзя, но возможно есть что-то нелогичное, но работающее(как в первой задачке) |
![]() |
![]() |
![]() |
#23 |
Пользователь
Регистрация: 14.07.2007
Сообщений: 40
|
![]()
Хм, интересно. Попробую тогда сегодня ещё немного над этой задачей подумать, так что, пожалуйста, не показывайте решение до завтра.
Единственное до чего пока додумался, это: Код:
Котэ покарает тебя, %username%!
Последний раз редактировалось Stilet; 30.06.2009 в 16:11. |
![]() |
![]() |
![]() |
#24 |
Пользователь
Регистрация: 25.06.2009
Сообщений: 39
|
![]()
Longedok, зато решение работает и его можно упростить до 4-х операций.
i shr 31 равно 0 если i неотрицательное и 1 если число отрицательное. т.е. мы можем получить знак числа. например таким образом -2*(i shr 31)+1 а потом просто домножить на этот знак само число i, т.е. конечная формула (-2*(i shr 31)+1)*i это и будет модуль числа. в своем решении я для получения знака числа я использую mod 2 |
![]() |
![]() |
![]() |
#25 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#26 |
Пользователь
Регистрация: 25.06.2009
Сообщений: 39
|
![]()
mod 2 может возыращать значения 1,-1,0
|
![]() |
![]() |
![]() |
#27 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
вот мой вариант.
вроде от длины числа не зависит... Код:
Последний раз редактировалось Serge_Bliznykov; 27.06.2009 в 13:40. |
![]() |
![]() |
![]() |
#28 |
Пользователь
Регистрация: 25.06.2009
Сообщений: 39
|
![]()
Serge_Bliznykov, отлично, именно такое решение было у меня потом я его сократил до ((2*x+1)mod 2)*x а потом понял, что получить нечетное число того же знака можно проще чем 2*x+1 и получилось решение из трех операций ((x or 1)mod 2)*x
|
![]() |
![]() |
![]() |
#29 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Коллега, респект. я явно не "дотянул" до Вашего решения. (да и с Вашей стороны подсказочка с mod 2 была...)
|
![]() |
![]() |
![]() |
#30 |
Пользователь
Регистрация: 25.06.2009
Сообщений: 39
|
![]()
Serge_Bliznykov, спасибо
ну что ж задачка №3. нужно записать формулой следующую функцию Код:
Последний раз редактировалось NuMeR; 28.06.2009 в 10:57. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Игры для программистов | [Smarik] | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 78 | 12.07.2010 03:42 |
Задачка для программистов | meira87 | Свободное общение | 6 | 24.03.2009 20:43 |
Игры для программистов! | Rembo | Свободное общение | 17 | 29.12.2007 09:22 |
ДЛЯ ПРОГРАММИСТОВ!!! | VOLODIA | Свободное общение | 0 | 09.04.2007 23:01 |