[Задача] Разбить битовый массив [до 16.02.2010]
Добавлено: 08 фев 2010, 08:00
Уважаемые пользователи ресурса LabVIEW Portal!
Объявляется очередной конкурс под рубрикой "Виртуальный задачник".
подробнее о самом конкурсе здесь
решения лежат здесь
Задача: есть массив двойных слов (U32). Этот массив представляет из себя битовый поток, в котором вплотную записаны целые беззнаковые числа длиной (N<32) бит.
Цель: разработать subVI, выдающую записанные числа в виде отдельного массива U32. Если количество бит в исходном массиве не делится на N нацело, то остаток ("лишние биты") выбрасывается.
Запрещено использовать DLL, CIN, ActiveX, .NET и любые другие внешние по отношению к LabVIEW модули кода.
Пример работы: N=5
Вход:
01010101 01011110 11001010 10101101
01110111 01011101 10010101 10111010
...
Разбиваем
01)(01010)(1 0101)(1110 1)(10010)(10 101)(01101)
0111)(0111 0)(10111)(01 100)(10101) (10111)(010
Выход:
01101
10101
10010
11101
10101
01010
01001
10111
10101
01100
10111
01110
...
То же графически: преобразуется в Предоставляется в файле архива:
Шаблон SubVI. (TestVITemplate.vit)
Программа тестирования. (MainTest.vi) Выводит как количество времени, затраченное на выполнение, так и проверяет правильность работы.
Очень медленная реализация. (для сравнения результатов). Dumb.vi
Документация на TestVITemplate (TestVITemplate.rtf).
Оценка:
Зачётный запуск производится на 2-х ядерном AMD x64 (Windows Vista, 32 bit LabVIEW 9.0). Выигрывает программа переработавшая один и тот же
массив из 1000000 элементов за меньшее время на наборе N=1..31. В случае статистической неразличимости результатов разных участников, оценивается
стиль написания блок-диаграммы (компактность) голосованием. VI будет заново скомпилирована перед запуском.
Решения присылать mzu2006 (т.е. мне) до 16 февраля 2010 включительно. Победитель получает медаль за победу в конкурсе по традиционным правилам "Виртуального Задачника".
Тому, кто сократит время выполнения Dumb.vi более чем в 3.5 раза, лично от меня карма.
Дополнительная информация:
Реализация с DLL "в лоб" исполняется в 10 раз быстрее Dumb.vi.
Вопросы задавать в этом топике.
Объявляется очередной конкурс под рубрикой "Виртуальный задачник".
подробнее о самом конкурсе здесь
решения лежат здесь
Задача: есть массив двойных слов (U32). Этот массив представляет из себя битовый поток, в котором вплотную записаны целые беззнаковые числа длиной (N<32) бит.
Цель: разработать subVI, выдающую записанные числа в виде отдельного массива U32. Если количество бит в исходном массиве не делится на N нацело, то остаток ("лишние биты") выбрасывается.
Запрещено использовать DLL, CIN, ActiveX, .NET и любые другие внешние по отношению к LabVIEW модули кода.
Пример работы: N=5
Вход:
01010101 01011110 11001010 10101101
01110111 01011101 10010101 10111010
...
Разбиваем
01)(01010)(1 0101)(1110 1)(10010)(10 101)(01101)
0111)(0111 0)(10111)(01 100)(10101) (10111)(010
Выход:
01101
10101
10010
11101
10101
01010
01001
10111
10101
01100
10111
01110
...
То же графически: преобразуется в Предоставляется в файле архива:
Шаблон SubVI. (TestVITemplate.vit)
Программа тестирования. (MainTest.vi) Выводит как количество времени, затраченное на выполнение, так и проверяет правильность работы.
Очень медленная реализация. (для сравнения результатов). Dumb.vi
Документация на TestVITemplate (TestVITemplate.rtf).
Оценка:
Зачётный запуск производится на 2-х ядерном AMD x64 (Windows Vista, 32 bit LabVIEW 9.0). Выигрывает программа переработавшая один и тот же
массив из 1000000 элементов за меньшее время на наборе N=1..31. В случае статистической неразличимости результатов разных участников, оценивается
стиль написания блок-диаграммы (компактность) голосованием. VI будет заново скомпилирована перед запуском.
Решения присылать mzu2006 (т.е. мне) до 16 февраля 2010 включительно. Победитель получает медаль за победу в конкурсе по традиционным правилам "Виртуального Задачника".
Тому, кто сократит время выполнения Dumb.vi более чем в 3.5 раза, лично от меня карма.
Дополнительная информация:
Реализация с DLL "в лоб" исполняется в 10 раз быстрее Dumb.vi.
Вопросы задавать в этом топике.