Как перебрать все варианты чего-либо

Публикация № 95914 25.10.11

Разработка - Математика и алгоритмы

Навеяно темой с Мисты:
Имеем ряд чисел от одного до девяти, надо расставить знаки плюсы и минусы, чтобы получилось в сумме 20
1(+/-)2(+/-)3(+/-)4(+/-)5(+/-)6(+/-)7(+/-)8(+/-)9 = 20 (20 не получиться, это просто пример!!!)

Вот как можно автоматизировать пример, что бы получить все варианты расчета?

Я раньше занимался программированием на Ассемблере, так что для меня двоичная и шестнадцатиричная система счисления ближе десятичной.

1 = 1000, 2 = 0100, 3 = 1100, 4 = 0010 и т.д. из этого для примера возьмем 0 = Минус, 1 = Плюс

В выше указаном примере нам надо перебрать 8 различных подстановок +- (8 = 11111111B = 255D)

КоличествоВариантов = 8;
КоличествоВариантовРасчета = POW(2, КоличествоВариантов) - 1; //Расчитываем количество вариантов
Для ВариантРасчета = 0 По КоличествоВариантовРасчета Цикл       //Перебираем варианты
   
ЗначениеВариантаРасчета = ВариантРасчета;                              //Берем текущий вариант

   
Пример = "";                                                                                      //Текст примера
   
Для ПереборВарианта = 1 По КоличествоВариантов Цикл            //Перебираем расчет варианта
       
Вариант = ЗначениеВариантаРасчета%2;                                 // Получаем значение варианта

        //Здесь выполняем действие со значением варианта, в нашем примере знак "+" или "-"

       
Знак = ?(Вариант = 1, "+", "-");

       
//Делаем текст примера

       
Пример = Пример + ПереборВарианта  + Знак;

       
//***


       
ЗначениеВариантаРасчета = Цел(ЗначениеВариантаРасчета / 2); //Сдвигаем на следующее значение варианта
   
КонецЦикла;

   
Пример = Пример + "9";//т.к. последнее число не вошло в цикл просто добавим его.

   
РасчетПримера = Вычислить(Пример);//Вычислим выражение

   
Сообщить(Пример + " = " + РасчетПримера);

КонецЦикла;

 

По этому принципу расчета сделана моя обработка "Рюкзак".

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. cool.vlad4 2 25.10.11 11:10 Сейчас в теме
Т.е. по сути это просто перебор всех возможных подстановок "+" и "-"? и неплохо бы, если есть упоминание на мисту, то хоть ссылку дать на исходную тему...
7. Ткачев 74 25.10.11 12:02 Сейчас в теме
(1)"+" и "-" Это для примера, допустим есть таблица товаров и из нее нам надо выбрать набор товаров который не ниже суммы в 100 руб. и не выше суммы 200 руб.
1) Отсеиваем товары у которых цена > 200 руб.
2) Создаем Временную таблицу куда по условиям сложим товары сумма которых не превышает 200 руб.
3) После 2-го цикла проверим на то что сумма у нас получилась > 100 руб. если "Истина" тогда добавим набор, если "Ложь" тогда очистим временную таблицу.
Вариантов использования много.
8. cool.vlad4 2 25.10.11 12:08 Сейчас в теме
(7) по моему неудачный пример
из нее нам надо выбрать набор товаров который не ниже суммы в 100 руб. и не выше суммы 200 руб.
- раз создается временная таблица, то и решается запросом
Да, я не спорю, полный перебор в любом случае где-нибудь используется.
9. Ткачев 74 25.10.11 12:14 Сейчас в теме
(8)Вот запросом было бы интересно посмотреть как это сделать, у меня не получилось, как я не пытался.
10. cool.vlad4 2 25.10.11 12:18 Сейчас в теме
(9) В смысле - набор товаров, а не товары, определенной суммой? Да, хрен, его знает, может можно, может нельзя, честно не знаю - не пытался. Да, вы поймите меня правильно ничего против вашей публикации не имею.
2. Ткачев 74 25.10.11 11:14 Сейчас в теме
3. Alraune 1495 25.10.11 11:20 Сейчас в теме
(2) Можно. Могли бы заодно и на свою обработку ссылку дать в тексте, раз ее упомянули.
4. Ткачев 74 25.10.11 11:33 Сейчас в теме
(3)А моем профиле разве не видно ссылок ?
http://infostart.ru/public/88022/
5. Alraune 1495 25.10.11 11:43 Сейчас в теме
(4) Видно. Но Вы переоцениваете любопытство читателей - в профиль искать полезет не каждый, а ткнуть в имеющуюся здесь же ссылку проще. Впрочем, дело Ваше
6. Ткачев 74 25.10.11 11:47 Сейчас в теме
(5)Да нее, я не спорю, зашугали просто мальчика банами за ссылки, пусть даже на текущий сайт.
11. vkr 102 26.10.11 09:37 Сейчас в теме
(0) Вспомнить молодость... Написать подобную фигню на 10 разных языках - от Ассемблера до Перла... :)
12. evn-zorin 32 26.10.11 10:10 Сейчас в теме
Прям задача с чемпионата по программированию, автору спасибо за публикацию интересных алгоритмов!
13. tdr1225 37 31.10.11 11:38 Сейчас в теме
(0) а как будешь поступать, если надо выбирать не +/-, а, например, +/-/* или еще больше арифметических действий?
14. Ткачев 74 31.10.11 11:51 Сейчас в теме
(13)см.(7), запросом у меня не получается так сделать, может кто поможет ?
15. tdr1225 37 31.10.11 13:05 Сейчас в теме
(14) я не о том, ты не понял
ты решал задачу: составить все слова длиной 8 символов из букв А и Б (0/1)
а я предлагаю такую задачу: составить все слова длиной 8 символов из букв А, Б, В, Г.
17. Ткачев 74 31.10.11 14:28 Сейчас в теме
(15)(16)Если рассчитывать как в (0), получилось очень заковыристо, я сделал по другому.

ВариантыБукв = "АБВГ";
КоличествоСимволов = СтрДлина(ВариантыБукв);
КоличествоВариантов = 8;
Массив = Новый Массив;
Для Аа = 1 по КоличествоВариантов Цикл
Массив.Добавить(1);
КонецЦикла;
Пока 1 Цикл
СтрокаТекста = "";
Для Аб = 1 по КоличествоВариантов Цикл
СтрокаТекста = СтрокаТекста + Сред(ВариантыБукв, Массив[Аб - 1], 1);
КонецЦикла;
Сообщить(СтрокаТекста);
Фл = 0;
Пока Массив[Фл] + 1 > КоличествоСимволов Цикл
Массив[Фл] = 1;
Фл = Фл + 1;
Если Фл = КоличествоВариантов Тогда
Возврат;
КонецЕсли;
КонецЦикла;
Массив[Фл] = Массив[Фл] + 1;
КонецЦикла;
16. tdr1225 37 31.10.11 13:07 Сейчас в теме
+
или еще интересней, если и длина слова и количество букв - переменные (параметры)
19. tdr1225 37 31.10.11 15:38 Сейчас в теме
(18)
не понял, а при чем здесь это?
(17)
на самом деле, это задача из комбинаторики о перестановках.
надо юзать рекурсию
20. Ткачев 74 31.10.11 15:45 Сейчас в теме
21. Арчибальд 2704 31.10.11 15:50 Сейчас в теме
Язык дан человеку, чтобы скрывать свои мысли ©

По тексту: Почему 2**8-1, а не 2**8?
Далее: чем двоичная система отличается (кроме основания) от троичной, четверичной и т.п.?
(19) Перестановки-то здесь при чем? Здесь задача: перебрать все слова длины L в алфавите из N букв. Слов таких, конечно, N**L.
23. tdr1225 37 31.10.11 16:04 Сейчас в теме
(21)
верно, я ошибся, перестановки ни при чем
24. Ткачев 74 31.10.11 18:26 Сейчас в теме
(21)Потому что 0 это тоже число и нам надо получить на выходе все включенные разряды. 256 = 000000001, 255 = 11111111
Я наверно в школе плохо учился, но я знаю только 4 системы счисления, 2, 8, 10, 16.
25. Арчибальд 2704 01.11.11 07:43 Сейчас в теме
22. see1c.ru 50 31.10.11 15:51 Сейчас в теме
(19) используя буквенный ряд А, Б, В, Г. Находим минимальное и максимальное числовое значение комбинаций.
Разница между максимальным и минимальным значением будет равна их количеству.
Циклом прогоняем от минимального до максимального и получаем все возможные комбинации этих букв. в виде 4-х буквенной строки.
26. Гость 20.12.11 12:49
очень интересная и полезная обработка,спасибо,очень кстати
Оставьте свое сообщение

См. также

Как работает серверный вызов в 1С

Математика и алгоритмы Управляемые формы Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    84633    pahich    86    

565

Минимализмы 3

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    54138    ildarovich    47    

423

Будни автоматизации или "мне нужна программка для 3D упаковки"

Математика и алгоритмы Оптовая торговля Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Бесплатно (free)

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

24.03.2014    49130    ildarovich    121    

186

Минимализмы 2

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Следующая серия "минимализмов" [http://infostart.ru/public/306536/]. Также, как и в предыдущей статье, здесь приведена подборка коротких оригинальных решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

23.02.2016    55035    ildarovich    84    

371

Минимализмы

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Приводится подборка кратчайших решений некоторых задач. Ранее эти решения были разбросаны по комментариям к чужим публикациям.

08.10.2014    100793    ildarovich    85    

738

Метод Кларка-Райта. Оптимальное планирование маршрутов грузоперевозок

Математика и алгоритмы Бесплатно (free)

Одной из наиболее важных задач каждого предприятия, осуществляющего доставку грузов в крупных населенных пунктах, является сокращение издержек. Возможное решение данной проблемы заключается в сокращении пробега автотранспорта и, как следствие, уменьшении расхода ГСМ. Появляются такие вопросы ... - СКОЛЬКО НУЖНО МАШИН ДЛЯ РАЗВОЗКИ КОНКРЕТНОГО ОБЪЕМА ГРУЗА ПО АДРЕСАМ ДОСТАВКИ ? - КАК РАЗБИТЬ ТОЧКИ ДОСТАВКИ НА ОПТИМАЛЬНЫЕ ПО ПРОБЕГУ И ЗАГРУЗКЕ МАШИН МАРШРУТЫ ? ... В этой статье Вы найдете один из многих способов получить ответ на эти вопросы.

10.02.2016    73202    mi1man    24    

109

Приемы обработки больших данных в 1С

Универсальные обработки Математика и алгоритмы Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    75471    tormozit    29    

290

Алгоритм “хвост змеи для заполнения прямоугольной области”.

Математика и алгоритмы Бесплатно (free)

При разработке http://infostart.ru/public/275582/ столкнулся с необходимостью распределить выделенные задания на прямоугольную область календаря. В результате родился алгоритм, который может пригодиться не только мне и не только в этой задаче.

20.06.2014    27811    milkers    16    

22

Предметно-ориентированное проектирование (3D) в 1С. Виртуальная машина.

Математика и алгоритмы Бесплатно (free)

Проектирование программного обеспечения - это постоянная битва за простоту.

03.06.2014    42338    Evgen.Ponomarenko    92    

107

Решение транспортной задачи запросом

Математика и алгоритмы Запросы Платформа 1С v8.3 Бесплатно (free)

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    37277    bforce    22    

149

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    32065    juntatalor    49    

55

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно!

Подготовка к аттестации Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    52935    bpc222    54    

278

v8: Концепция минимального изменения конфигурации для легкого обновления

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

"Лучше день потерять потом за пять минут долететь" ((с) "Крылья, ноги и хвосты") или как сделать так чтобы обновление конфигурации проходило с минимальными трудозатратами.

28.01.2013    39385    MarSeN    57    

181

Алгоритм ведения дебиторской задолженности(Часть 1)

Математика и алгоритмы Взаиморасчеты Бухгалтерский учет Бесплатно (free)

Алгоритм построения дебеторской задолженности с привязкой отгрузки и оплат

29.11.2012    20493    anterehin    15    

7

Пример выбора несколько обработчиков событий записи объекта для решения одной задачи

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Данная публикация предназначена для начинающих разработчиков и является продолжением статьи "Обработчики событий при записи объектов. Зачем и что за чем?" (ссылка далее). Содержит пример использования несколько обработчиков событий для решения одной задачи и объясняется почему выбраны именно они.

27.09.2012    199251    AlbinaAAA    65    

501

Альтернативные способы работы с XML. Часть 2: Введение в xPath или запросы к XML

Математика и алгоритмы Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В предыдущей статье "Введение в DOM или объектная модель документа" было описано понятие объектной модели документа (DOM), раскрыты плюсы и минусы использования модели при разборе файлов XML, приведено сравнение с построчным последовательным разбором. Были представлены варианты выборки данных с помощью объекта 1С ДокументDOM. Теперь настало время познакомить читателей с самым, на мой взгляд, интересным способом извлечения данных из XML - при помощи языка запросов xPath.

09.08.2012    44547    1cspecialist    13    

59

Лицензии на программное обеспечение: что, как и для чего

Математика и алгоритмы Россия Бесплатно (free)

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

17.07.2012    166535    Alraune    36    

106

От Hello world - к защите конфигураций за 1 минуту

Защита ПО и шифрование Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

19.05.2012    36473    O-Planet    130    

211

Рекурсия с недостачей, или Краткая теория графов

Математика и алгоритмы Запросы Россия Бесплатно (free)

Как приспособить решение, предложенное в статье «Транзитивное замыкание запросом» (https://infostart.ru/1c/articles/158512/), к неудобной задаче.

26.05.2023    463    AnatolPopov    2    

6

Мини-обзор разных решений задач

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья как мини-круассан на завтрак.

03.04.2023    1623    RustIG    4    

19

[После] Новогодние задачи 2023

Математика и алгоритмы О жизни Бесплатно (free)

Не желаете ли очередную порцию интересных задач?

03.01.2023    1351    Alxby    18    

7

Тестирование средств 1С для решения СЛАУ

Механизмы платформы 1С Математика и алгоритмы Платформа 1С v8.3 Россия Бесплатно (free)

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

23.11.2022    1376    gzharkoj    11    

15

Распределенные алгоритмы РИБ 1С

Математика и алгоритмы Обмен между базами 1C Платформа 1С v8.3 Бесплатно (free)

Небольшое исследование на тему применимости классических распределённых алгоритмов репликации и синхронизации данных между узлами обмена РИБ 1С.

02.07.2021    2123    zhichkin    1    

8

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    6832    John_d    73    

46

Параллельные вычисления расчета факториала числа N

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Распараллеливание алгоритма с помощью фоновых заданий (асинхронные вычисления)

29.06.2020    5533    RustIG    18    

25

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    3166    fishca    13    

35

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

Подробный разбор, с примером использования, встроенного механизма кластеризации 1С.

31.08.2021    5283    dusha0020    8    

62

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    199702    AlbinaAAA    51    

751

Преобразование запросов

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Использование математических методов для языка запросов.

15.03.2018    13019    vasilev2015    24    

17

Алгоритмы распределения сумм (наивная методика, Алгоритм Кэхэна)

Математика и алгоритмы Россия Бесплатно (free)

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

08.07.2021    5385    con-men    31    

22

Параллельная обработка очереди сообщений

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Описание алгоритма обработки очереди последовательных сообщений регистрации изменений записей регистра сведений. Алгоритм может быть применим к любым объектам метаданных. Алгоритм основан на обработке объектов по их ключам.

15.06.2021    4255    zhichkin    11    

22

Чем воспользоваться для распознавания котиков в 1С?

Математика и алгоритмы Языки и среды Платформа 1С v8.3 Бесплатно (free)

На митапе по инструментам для расширения возможностей 1С выступил Олег Филиппов. Он сравнил подходы Native API, COM, Docker и Serverless, и рассказал, как упростить использование в 1С алгоритмов, реализованных на других языках, с помощью облачной технологии «Функция как сервис».

12.04.2021    4783    comol    10    

29

Эффективные приемы разработки

Математика и алгоритмы Рефакторинг и качество кода СКД Платформа 1С v8.3 Бесплатно (free)

На Infostart Meetup Ekaterinburg.Online выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами приемами разработки, которые помогут избежать потенциальных проблем при реализации сложных проектов.

07.04.2021    5309    SergeyN    13    

39

Что такое алгоритм?

Математика и алгоритмы Бесплатно (free)

Как ответить на этот вопрос и не попасть пальцем в небо.

25.02.2019    27658    mkalimulin    274    

5

Повышение качества разработки. Статья 3. Ошибки программы

Математика и алгоритмы Рефакторинг и качество кода Бесплатно (free)

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Статья 3. Эта статья посвящена ошибкам программ, их классификации и способам исправления.

10.07.2018    24736    Артано    92    

106

Повышение качества разработки. Статья 2. Абстракции, их свойства и роль в классических парадигмах программирования

Математика и алгоритмы Бесплатно (free)

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Часть 2. Эта статья посвящена абстракциям, их свойствами и практическому применению в рамках классических парадигм программирования.

24.05.2018    14510    Артано    42    

53

Повышение качества разработки. Статья 1. Определение терминологии и проблематики

Математика и алгоритмы Бесплатно (free)

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Часть 1

10.05.2018    19585    Артано    52    

128

Рекурсия для начинающих

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Рассмотрен подход к пониманию рекурсий. Приведены примеры из реальной практики.

10.02.2021    11061    szv    5    

13