Генерация сочетаний (Обычное приложение)

09.08.17

Разработка - Инструментарий разработчика

Генератор сочетаний 1С

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Сочетания
.epf 12,80Kb
32
32 Скачать (2 SM) Купить за 2 150 руб.

Сочетаниями из n элементов по k называются соединения, которые можно образовать из n элементов, собирая в каждое соединение k элементов; при этом соединения отличаются друг от друга только самими элементами (различие порядка их расположения во внимание не принимается).

Например, из 3 элементов (a,b,c) по 2 можно образовать следующие сочетания: ab, ac, bc.

Число всех возможных сочетаний, которые можно образовать из n элементов по k, обозначается символом Cnk и вычисляется по формуле:

За основу математических алгоритмов был взяты статьи с http://algolist.manual.ru/maths/combinat/

Так же хочется поблагодарить пользователя noblekey за его алгоритм генерации случайных чисел. Код был взят с публикации //infostart.ru/public/57305/

Алгоритм генерации сочетаний обширно использовался мною на олимпиадах по 1С.

Возможно, есть более быстрые решения. Обработка поддерживает максимально число из 20 цифр, но можно добавить в табличную часть "Числа" реквизиты вида "Цифра_21","Цифра_22" и больше, и после чего будет поддерживаться числа, длиной больше 20 цифр.

комбинаторика сочетания генерация сочетаний

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    181526    1006    403    

959

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    22585    150    82    

146

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    19792    51    19    

85

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    13369    55    33    

75

Инструментарий разработчика Программист Платформа 1С v8.3 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    29982    103    48    

147

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18920    7    32    

43

Инструментарий разработчика Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    2094    3    0    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. rayastar 1551 12.12.13 15:16 Сейчас в теме
По необходимости могу выложить работу на управляемых формах
2. WKBAPKA 215 12.12.13 16:51 Сейчас в теме
а есть что нибудь для необычных приложений?
3. rayastar 1551 12.12.13 17:47 Сейчас в теме
(2) WKBAPKA, есть "что нибудь" для управляемого приложения)
4. mikuho 12.12.13 22:21 Сейчас в теме
Долго переделывали алгоритм?
5. rayastar 1551 13.12.13 08:31 Сейчас в теме
(4) mikuho, алгоритм переделывал с паскаля. но собирал его из двух исходников. в целом, ушло около 6 часов на написание(pascal) и перенос на 1С. Много возникало нюансов по поводу генерации случайных чисел. Не обошлось без помощи коллег)
6. DrAku1a 1757 18.12.13 07:03 Сейчас в теме
Алгоритм?
В самом простом для понимания виде:
F = N-k+1;
Для сч1=1 По F Цикл
	Для сч2 = сч1+1 По F+1 Цикл
		Для сч3 = сч2+1 По F+2 Цикл
		...
                // и таких циклов k штук
		
                Комбинация = (сч1, сч2, сч3, ..., счk);

		...
		КонецЦикла;
	КонецЦикла;
КонецЦикла;
Показать
Вот из жизни: подходишь к двери, на ней кодовый замок (нужно нажать три кнопки из десяти и дверка откроется, визуально код определить не возможно - на кнопках нет потёртостей). Нужно перебрать все возможные варианты.
Алгоритм перебора:
1. Зажимаешь пальцами одной руки 1 и 2, перебираешь свободной клавиши 3,4,5,6,7,8,9,0,
2. Далее зажимаешь 1 и 3, перебираешь 4,5,6,7,8,9,0 (2 не надо, т.к. 123 равнозначно 132)
... и так до 1 и 8, нажимаешь 9.
3. Зажимаешь 2 и 3, перебираешь 4,5,6,7,8,9,0 (1 не надо, т.к. с ним уже все комбинации перебрали)
4. Зажимаешь 2 и 4, перебираешь 5,6,7,8,9,0
и так до 8-9-0
или тоже самое в коде:
Для сч1=1 По 8 Цикл
	Для сч2 = сч1+1 По 9 Цикл
		Для сч3 = сч2+1 По 10 Цикл
			ПроверитьКомбинацию(сч1, сч2, ?(сч3=10, 0, сч3));
		КонецЦикла;
	КонецЦикла;
КонецЦикла;
Для общего случая, когда N и k заранее неизвестны - подойдет использование рекурсии.
7. rayastar 1551 18.12.13 08:37 Сейчас в теме
(6) DrAku1a, Согласен, есть простое понимание. А есть универсальное, в котором не нужно учитывать количество циклом и писать 20 "Для Каждого Цикл". Главное свойство любого алгоритма - оптимальность и универсальность.
8. anig99 2855 28.12.13 09:20 Сейчас в теме
не совсем понимаю зачем это, но плюс
9. rayastar 1551 28.12.13 13:21 Сейчас в теме
(8) anig99, В прикладных задачах найти применение трудно. Я писал конфигурацию по Лото(сбор, анализ данных, планирование ставок и тому подобное) Если интересно - могу выложить на всеобщее обозрение. Вот как раз там я использовал данный алгоритм
10. mikuho 01.01.14 19:42 Сейчас в теме
(9) а что за конфигурация, можно по подробней? я кажется пишу нечто подобное
11. rayastar 1551 01.01.14 20:43 Сейчас в теме
(10) mikuho, анализ данных лото. делал летом этого года, около 5-6 месяцев)
12. rayastar 1551 01.01.14 20:43 Сейчас в теме
Могу выложить на всеобщее обозрение
Оставьте свое сообщение