Нахождение слагаемых из списка по их сумме

09.04.12

Задачи пользователя - Разное

Обработка находит все возможные варианты состава слагаемых из списка для получения суммы поиска.

Скачать исходный код

Наименование Файл Версия Размер
НахождениеСлагаемыхИзСпискаПоИхСумме
.epf 12,43Kb
19
.epf 12,43Kb 19 Скачать

Обработка находит все возможные варианты состава слагаемых из списка для получения суммы поиска.

Необходимо заполнить левую табличную часть на форме предполагаемыми слагаемыми (возможна загрузка из Excel - первый лист, первая колонка с первой ячейки) и ввести сумму для поиска. Выбрать ограничение по количеству слагаемых в итоговом выражении. 
По окончании выполнения обработки в правом поле на форме будут отображены все варианты состава слагаемых по номеру строки в левой табличной части.
Внимание! Чем больше вариантов слагаемых в левом списке, тем дольше выполняется обработка. НО больше всего время выполнения обработки зависит от выставленного предельного количества слагаемых. К этому параметру следует относится серьезно, ибо автор не отвечает за последствия загрузки процессора и оперативной памяти вашего компьютера.

На самом деле все не так страшно. Многое зависит от целей вашего поиска. Например у вас есть список из 20 значений от 1000 до 1500, а найти вам нужно варианты состава например 6500. Понятно, что вариантов тут будет очень много. А если Вы еще зададите ограничение в 15 слагаемых (что не целесообразно - начинать лучше с 3-4), то ждать придется ооочень долго.

Старался делать так, чтобы память загружалась по-минимуму... но время выполнения от этого увеличено. Метод поиска вариантов - обычный перебор. Поэтому возможных вариантов, хранимых в памяти... многова-то.

В общем... эта обработка писалась на коленке для поиска трех слагаемых... потом была расширена... если найдете способ увеличить производительность, или придумаете (найдете)  что-то проще и удобнее... рад буду услышать :) Также рад буду слышать критику в области написания кода касательно производительности обработки. Ну а если найдете ошибку - скрин в студию. Повторюсь - дело было написано на коленке за отсутствием найденных аналогов в сети.

За плюсы и минусы благодарен заранее :) 

 

*обновил 09.04.12. Увеличена скорость и уменьшена задействованная память

См. также

Тренажер Азбуки Морзе

Разное Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Тренажер Азбуки Морзе на 1С без внешних компонент.

1 стартмани

17.04.2024    618    1    Irwin    2    

12

Разложим фото по полочкам

Разное Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В публикации представлена простая внешняя обработка, позволяющая перенести файлы с фото в нужные папки.

1 стартмани

21.03.2024    419    1    vikhrov53    0    

3

Учет домашней квартплаты

Разное Платформа 1С v8.3 Конфигурации 1cv8 Энергетика и ЖКХ Россия Бухгалтерский учет Управленческий учет Абонемент ($m)

Позволяет в одном документе собрать записи по всем коммунальным платежам и показаниям бытовых приборов. Вы не пропустите и не забудете свой коммунальный платеж. Будете точно знать ежемесячную сумму коммуналки по всем объектам собственности. Расширение предназначено для самой популярной конфигурации 1С:Бухгалтерия 8, ред. 3. Объекты расширения не имеют заимствования конфигурации. Его легко встроить в другие типовые конфигурации 1С.

1 стартмани

30.01.2024    530    2    kwn2000    2    

5

Конфигурация "Рюкзачок"

Разное Платформа 1С v8.3 Туризм и путешествия Россия Абонемент ($m)

Составление комплекта вещей в поездку, поход, для работы и т.п. Конфигурация разработана для платформы 1С:Предприятие 8.3 (конкретно учебная версия 8.3.13.1644, потому что более новые утомили меня своими сюрпризами).

1 стартмани

19.01.2024    6243    5    AnatolPopov    31    

36

Конфигурация "Казначей группы (класса/команды/...)"

Разное Взаиморасчеты Платформа 1С v8.3 Общественные и некоммерческие структуры Обучение, бизнес-тренинг, курсы Развлечения, искусство, спорт Домашние учет и финансы Управленческий учет Абонемент ($m)

Нано- (даже не микро- !) конфигурация для тех, кто выступает в роли казначея класса/группы/команды, и в чьи задачи входит сбор денег с участников за участие в каких-то мероприятиях, а потом передача собранных денег организаторам этих мероприятий.

1 стартмани

03.11.2023    711    3    q_i    0    

11

Математический тренажер через телеграмм (feat 1С)

Математика и алгоритмы Разное Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    1962    maksa2005    8    

22

Генератор математических примеров

Математика и алгоритмы Разное Абонемент ($m)

Маленькая программа для генерации примеров. C#

1 стартмани

28.09.2023    1381    1    FIERYLIONS    18    

7

Конструктор: ЧислоПрописью и СтрокаСЧислом

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

Возможно я просто ленивый, а может потому что понадобилось... в общем сделал конструктор параметров. Может 1С когда-нибудь сделает что-нибудь такое в конфигуратор?

1 стартмани

15.09.2023    3145    12    vandalsvq    8    

48
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. arjuna 08.04.12 09:05 Сейчас в теме
Еще не пробовал, но очень заинтересовался. Такого типа обработок не видел. Может не все понимают для чего можно использовать. Мне конкретно может пригодится для поиска расхождений в итоговых суммах оборотно сальдовых ведомостей и т.п. где сумма расхождений состоит из нескольких слагаемых.
2. vsinyavkin 9 08.04.12 11:40 Сейчас в теме
Вы все правильно поняли. Только о сложностях в виде времени выполнения, которое напрямую зависит от количества вариантов слагаемых и их предельного количества не забывайте.
И еще одно уточнение: код в обработке написан в читабельном виде. Но если его частично отредактировать согласно рекомендациям из этой статьи http://infostart.ru/public/71130/#Pro_cikly_v_odnu_stroku (ее автору огромное спасибо), то производительность увеличивается довольно прилично.
Оставьте свое сообщение