[Задача] Разбить битовый массив [до 16.02.2010]

Различные конкурсы нашего портала

Какое из решений наиболее достойно?

Опрос закончился 19 фев 2010, 00:00

Solution01
0
Голосов нет
Solution02
0
Голосов нет
Solution03
3
50%
Solution04
1
17%
Solution05
2
33%
 
Всего голосов: 6

Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

[Задача] Разбить битовый массив [до 16.02.2010]

Сообщение mzu2006 »

Уважаемые пользователи ресурса 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
...

То же графически:
Input.png
Input.png (3.62 КБ) 12094 просмотра
преобразуется в
Output1.png
Output1.png (5 КБ) 12077 просмотров
Предоставляется в файле архива:
Шаблон 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.
Вопросы задавать в этом топике.
Вложения
Release80 v1.zip
(78.42 КБ) 278 скачиваний
Последний раз редактировалось mzu2006 18 фев 2010, 00:23, всего редактировалось 9 раз.
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: [Задача] Разбить битовый массив [до 14.02.2010]

Сообщение FireFly »

Я не понял как
mzu2006 писал(а): 01)(01010)(1 0101)(1110 1)(10010)(10 101)(01101)
0111)(0111 0)(10111)(01 100)(10101) (10111)(010
превращается в
mzu2006 писал(а): 01101
10101
10010
11101
10101
01010
01001
10111
10101
01100
10111
01110
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: [Задача] Разбить битовый массив [до 16.02.2010]

Сообщение mzu2006 »

Я имел в виду вот это:
Input.png
Input.png (3.62 КБ) 12097 просмотров
Output.png
Output.png (6.2 КБ) 12094 просмотра
Последний раз редактировалось mzu2006 14 фев 2010, 09:23, всего редактировалось 2 раза.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: [Задача] Разбить битовый массив [до 14.02.2010]

Сообщение Eugen Graf »

Пока выдаёт такой результат. Удивительно, но при N=3 наши ответы не совпадают, остальное работает.
Вложения
Zadanie.png
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: [Задача] Разбить битовый массив [до 16.02.2010]

Сообщение mzu2006 »

Эти ошибки устранены. Спасибо Eg.
Поставь repetitions >1, чтобы показывалась ошибка определения времени
N=3,9 и некоторых других имеет место проблема. Устраню в ближайше время. Пока ориентируйтесь на N=5.
Последний раз редактировалось mzu2006 14 фев 2010, 09:24, всего редактировалось 3 раза.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: [Задача] Разбить битовый массив [до 14.02.2010]

Сообщение Eugen Graf »

Вот
Вложения
Zadanie.png
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: [Задача] Разбить битовый массив [до 16.02.2010]

Сообщение mzu2006 »

Здорово, оптимизируй и присылай решение!
Последний раз редактировалось mzu2006 14 фев 2010, 09:24, всего редактировалось 1 раз.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: [Задача] Разбить битовый массив [до 14.02.2010]

Сообщение Eugen Graf »

По-моему ты ошибся в подведении итога, т.к. моё решение работает в 5 раз медленнее твоего, а показатель "improved by, %" выдаёт 500.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: [Задача] Разбить битовый массив [до 16.02.2010]

Сообщение mzu2006 »

Небольшие корректировки к конкурсу.
1. Если количество бит в исходном массиве не делится на N нацело, то остаток ("лишние биты") выбрасывается.

2. Откорректирована dumb.vi в соответствии номером 1.

3. Индикатор "Improved by, %" следует читать "Time, compared to Dumb.vi". Соответственно косметически изменена программа тестирования.

Обновлены файлы в архиве в первом посте и внесены косметические изменения в сам пост.

Спасибо, Eg.
Последний раз редактировалось mzu2006 14 фев 2010, 09:24, всего редактировалось 1 раз.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: [Задача] Разбить битовый массив [до 16.02.2010]

Сообщение mzu2006 »

Итак два дня уже прошли и мы имеем одно конкурсное решение. С нетерпением ждём остальных.
Последний раз редактировалось mzu2006 14 фев 2010, 09:24, всего редактировалось 1 раз.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: [Задача] Разбить битовый массив [до 16.02.2010]

Сообщение mzu2006 »

3 дня до кончания конкурса и уже есть целых 2 решения !!!
Последний раз редактировалось mzu2006 14 фев 2010, 09:25, всего редактировалось 1 раз.
Аватара пользователя
Pavel Krivozubov

Activity Bronze
professor
professor
Сообщения: 4421
Зарегистрирован: 07 фев 2008, 16:39
Награды: 3
Версия LabVIEW: 7.0 - 2013
Откуда: г. Электросталь
Благодарил (а): 24 раза
Поблагодарили: 9 раз
Контактная информация:

Re: [Задача] Разбить битовый массив [до 14.02.2010]

Сообщение Pavel Krivozubov »

А почему три дня осталось? Ведь по правилам конкурса - он длится девять дней, т.е. конкурс должен идти не до 14-го, а до 16-го, а в среду 17-го должны выкладываться варианты и запускаться голосовалка. Которая в свою очередь длится до пятницы, а в пятницу 19-го февраля в 16.00 объявляется победитель.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: [Задача] Разбить битовый массив [до 14.02.2010]

Сообщение Eugen Graf »

Класс, два решения это уже хорошо, интересно посмотреть на второе и на образец.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: [Задача] Разбить битовый массив [до 16.02.2010]

Сообщение mzu2006 »

Начинается новая неделя. До конца конкурса 2 дня. У нас уже 3 решения.
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: [Задача] Разбить битовый массив [до 16.02.2010]

Сообщение FireFly »

Пока добился только 193% при N=5 :think:
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Конкурсы»