папа Карло писал(а):
как вариант, создай класс SmartArray который имеет одно дополнительное проперти есть ли в массиве 0. тогда читать будет быстро, но "перебор" будет на этапе вставки. эсли это допустимо, то все пучком.
Перебор и сравнение переносится в класс? Тогда это не решение и не оптимизация.
папа Карло писал(а):
как вариант, создай класс SmartArray который имеет одно дополнительное проперти есть ли в массиве 0. тогда читать будет быстро, но "перебор" будет на этапе вставки. эсли это допустимо, то все пучком.
Перебор и сравнение переносится в класс? Тогда это не решение и не оптимизация.
чудес не бывает. ты где то должен потратить время на проверку... либо при вставке, либо при чтении. если при чтении то без перебора не обойдешься как не крути. как в сказке: и рыбку съесть и на.... сесть
Когда ставится вопрос, то подразумевается, что решение существует.
Да и переберать можно, но сравнение должно быть одно, и полученный вариан должен быть оптимизированный по отношению к тривиальному.
в терминах интелловского ассемблера вряд ли получитcя, а
вто собственно memchr & co. из стандартной библиотеки
Поцессор может быть другим.
охотно верю. но (опять же) оптимизировать под абстрактную
платформу - смысла нет.
чтобы понять если ли ноль, надо что-то сделать с каждым
елементом (и может быть что-то еще дополнительно). вопрос состоит
в том будет ли вто что-то быстрее или медленнее операции
сравнения.
твои пример с &&= прекрасное тому подтверждение - в зависимости
от платформы операция приведения int'a к 0 или 1 может быть
имплементирована сильно по-разному, и в результате такой метод
может оказаться как быстрее так и медленнее тривиального.
Когда ставится вопрос, то подразумевается, что решение существует.
Да и переберать можно, но сравнение должно быть одно, и полученный вариан должен быть оптимизированный по отношению к тривиальному.
я подразумеваю что ты подразумеваешь не верно. можешь объяснить почему ты считаешь, что существует решение которое не поребирает массив и делает это за одно сравнение (итерацию)? можешь поделиться дополнительной информацией которая заставляет тебя так думать?
ajkj3em, если задачу предлагают решить на С, то не стоит вникать в тип процессора и особенностей его асемблера.
папа Карло, я уже признал свою ошибку в формулировки задачи. Правильно так:
Определить есть ли ноль в массиве не сравнивая каждый член этого массива с нулем. Можно использовать другие математические операции. Сравнение с нулём может быть произведено только один раз. Код должен получиться в результате оптимизированным. Язык С.
tiasur писал(а):
Определить есть ли ноль в массиве не сравнивая каждый член этого массива с нулем. Можно использовать другие математические операции. Сравнение с нулём может быть произведено только один раз. Код должен получиться в результате оптимизированным. Язык С.