Массив с нулём

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
aissp
Маньяк
Сообщения: 2710
Зарегистрирован: 07 ноя 2005, 09:51

Сообщение aissp »

а чего не догоняю я когда пишу типа

result &= array;

Безо всяких там многочисленных операций?
tiasur
Маньяк
Сообщения: 1510
Зарегистрирован: 26 фев 2006, 10:00
Откуда: offline

Сообщение tiasur »

Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.
tiasur
Маньяк
Сообщения: 1510
Зарегистрирован: 26 фев 2006, 10:00
Откуда: offline

Сообщение tiasur »

aissp писал(а):а чего не догоняю я когда пишу типа

result &= array;

Безо всяких там многочисленных операций?


0101010
1010101
tiasur
Маньяк
Сообщения: 1510
Зарегистрирован: 26 фев 2006, 10:00
Откуда: offline

Сообщение tiasur »

А вообще интересно когда ожидается решение таких задачек через несколько минут. Мы тут на несколько дней растянули и то не всем понятно.
Аватара пользователя
aissp
Маньяк
Сообщения: 2710
Зарегистрирован: 07 ноя 2005, 09:51

Сообщение aissp »

o да, по понедельникам до обада туплю не подеццки. Санкс
tiasur
Маньяк
Сообщения: 1510
Зарегистрирован: 26 фев 2006, 10:00
Откуда: offline

Сообщение tiasur »

aissp писал(а):o да, по понедельникам до обада туплю не подеццки. Санкс
У меня умеренное накануне употребление спиртного отбивает способность к полноценному мышлению на несколько последуюших дней.
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.

sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля

(edit) шутка :)
Последний раз редактировалось ajkj3em 26 мар 2007, 11:21, всего редактировалось 1 раз.
tiasur
Маньяк
Сообщения: 1510
Зарегистрирован: 26 фев 2006, 10:00
Откуда: offline

Сообщение tiasur »

ajkj3em писал(а):
tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.

sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля
попытаюсь вечером осилить
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

tiasur писал(а):
ajkj3em писал(а):
tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.

sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля
попытаюсь вечером осилить
хехе .. нет, он таки не прав 0x80000000 --- i^(i-1) ---> 0xffffffff
Аватара пользователя
sz
Маньяк
Сообщения: 1266
Зарегистрирован: 17 фев 2003, 19:34

Сообщение sz »

ajkj3em писал(а):
tiasur писал(а):
ajkj3em писал(а):
tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.

sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля
попытаюсь вечером осилить
хехе .. нет, он таки не прав 0x80000000 --- i^(i-1) ---> 0xffffffff
Хех. Поймал. Неправ, фактически :)
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

sz писал(а):Хех. Поймал. Неправ, фактически :)
я тут псевдо-теоретическое обоснование придумал :)

все по-битовые операции работают "однородно" для всех значений int.
то есть если нам надо поймать именно ноль, то нужно использовать
операцию, в которой ноль являетcя "особенным значением" (если
смотреть на биты input'а и output'а). из "легких" операций такой явлаетcя
только минус .. отcюда и пляшем.
tiasur
Маньяк
Сообщения: 1510
Зарегистрирован: 26 фев 2006, 10:00
Откуда: offline

Сообщение tiasur »

ajkj3em писал(а):
sz писал(а):Хех. Поймал. Неправ, фактически :)
я тут псевдо-теоретическое обоснование придумал :)

все по-битовые операции работают "однородно" для всех значений int.
то есть если нам надо поймать именно ноль, то нужно использовать
операцию, в которой ноль являетcя "особенным значением" (если
смотреть на биты input'а и output'а). из "легких" операций такой явлаетcя
только минус .. отcюда и пляшем.
Я еще много страниц назад пытался умножать на минус единицу, но это работает для положительных чисел. А вот так красиво складывать отрицательные с положительными не дошло до меня :(
Аватара пользователя
Baguk
Маньяк
Сообщения: 2365
Зарегистрирован: 25 янв 2007, 12:55
Откуда: UA->AZ->IL->CA

Сообщение Baguk »

Оптимизация поиска проста: проверяется последний элемент на ноль. Если не ноль, то заменяется нулём. После этого вместо 2-х проверок (ноль или конец массива) надо проверять только на ноль. В 2 раза меньше сравнений.
Аватара пользователя
Azazello
Житель
Сообщения: 769
Зарегистрирован: 16 янв 2007, 04:31

Сообщение Azazello »

Baguk писал(а):Оптимизация поиска проста: проверяется последний элемент на ноль. Если не ноль, то заменяется нулём. После этого вместо 2-х проверок (ноль или конец массива) надо проверять только на ноль. В 2 раза меньше сравнений.
Да, я тоже подумал о том, чтобы дописать ноль в конец массива. Заменить последний элемент на ноль даже лучше.
tiasur
Маньяк
Сообщения: 1510
Зарегистрирован: 26 фев 2006, 10:00
Откуда: offline

Сообщение tiasur »

Azazello писал(а):
Baguk писал(а):Оптимизация поиска проста: проверяется последний элемент на ноль. Если не ноль, то заменяется нулём. После этого вместо 2-х проверок (ноль или конец массива) надо проверять только на ноль. В 2 раза меньше сравнений.
Да, я тоже подумал о том, чтобы дописать ноль в конец массива. Заменить последний элемент на ноль даже лучше.
Задача другая была.
Ответить