Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 131 След.
Подбор слагаемых для нужной суммы
 
Одно из решений из этой темы
Считает не быстро, но все варианты рассчитал
Изменено: MCH - 07.11.2025 09:15:15
Подбор слагаемых для нужной суммы
 
Цитата
Старичок написал:
Цифры это набор символов от нуля до девяти с помощью которых записываются числа.

Цитата
Как скучно жить среди занудов
Сказал трёхлетний Михаил
Среди зануд поправил Павел
Тридцатилетний и в очках

Есть двоичная, восьмеричная, десятичная, шестнадцатеричная системы счисления (из общеупотребительных) и набор цифр в каждой системе разный
Excel может работать до 36-ричной системы счисления, в качестве цифр используются знаки 0-9A-Z
А еще есть римские числа, где числа записываются буквами и множество других

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

Сложность по времени: O(n * 10 ^ m), где n - количество слагаемых, m - количество значащих цифр
Сложность по памяти: O(10 ^ m)
Поиск суммы из 30 - 100 слагаемых в пределах до нескольких миллионов занимает секунды или доли секунды.

Переборы это долго, но перебор 10 слагаемых из 35 проходит относительно быстро
Подбор слагаемых для нужной суммы
 
Цитата
БМВ написал:
По теме - так как нет никаких доп условий, то из представленных данных можно составить 17млн. наборов.
из 35 слагаемых можно получить 2^35 (около 34 млрд) вариантов сложений чисел.
Теоретически можно их все перебрать, но времени потребуется много

варианты решения отсюда: http://www.excelworld.ru/forum/3-5196-1
Изменено: MCH - 06.11.2025 17:51:00
Работа оборудования
 
Еще вариант с доп. формулами
Формула по двум критериям (цвет и номер догора)
 
Данные можно преобразовать в плоскую таблицу, как в примере
Затем получать любые группировки и фильтрации с помощью сводных таблиц
Подойдет для больших количеств данных

Преобразование можно сделать макросом или через Power Query, если выгружается из какой то базы данных, то выгружать в нужном формате в виде таблицы
сколько дней в году считает эксел?, формула вычисления заданной даты определённое количество лет и дней назад
 
Цитата
shegal написал:
Например: 15 мая 2025 г 100 лет назад минус 1 день должно получиться 14 мая 1925 г!!!
Код
=ДАТАМЕС("15.05.2025";-100*12)-1

с привязкой к ячейке:
Код
=ДАТАМЕС(A1;-100*12)-1

или
Код
=ДАТА(ГОД(A1)-100;МЕСЯЦ(A1);ДЕНЬ(A1))-1

Цитата
shegal написал:
Каким образом выполнять операции  датами до 1900 года?
Excel не может работать с датами до 1900 года, эти расчеты можно перевести в VBA, где возможно работать с отрицательными (до 1900 года) датами, а также корректно учитывается, что в 1900 году 365 дней, а не 366
поиск всех комбинаций значений из столбцов
 
Вариант решения через генератор сочетаний отсюда:
Как я понял, для данной задачи нужно сгенерировать все сочетания 12 чисел из 13
Найти нужное число в формуле
 
Решение с использование регулярных выражений на базе UDF из приемов: https://www.planetaexcel.ru/techniques/7/4844/
Выделяем целые числа из формулы
Если указать значение 1 или опустить, то будет первое число, если указать -1, то последнее число, -2 - предпоследнее и т.п.
Проверки на ошибки не делалось
Если нужны и дробные значения, то можно переделать шаблон для регулярного выражения
Определить простое ли число или составное (без VBA)
 
Сделал раскраску чисел через условное форматирование
Простые числа - положительные
Составные числа - отрицательные
Изменено: MCH - 18.07.2025 15:29:00
Определить простое ли число или составное (без VBA)
 
Во вложении генератор спирали на VBA, пример матрицы 99 на 99
для больших чисел может не хватить памяти, но матрицу 999 на 999 можно построить достаточно быстро

Код на VBA:
Скрытый текст


Раскраску чисел добавьте сами
Изменено: MCH - 18.07.2025 08:56:31
Определить простое ли число или составное (без VBA)
 
Цитата
написал:
Как сделать простые числа на спирали чисел автоматизировать
Речь о Спирали Улама?
Реализовал на Python спираль 999 х 999:
Решетом Эратосфена находим все простые числа в массиве от 0 до 999*999
Далее закручиваем числа в спираль - создаем матрицу со значениями True/False (Простое/Составное)
И рисуем картинку

на VBA пока лень переносить
Изменено: MCH - 18.07.2025 07:41:12
Задача о Ранцах, Нужна консультация по возможностям алгоритмов раскроя материала.
 
Не знаю, актуальна ли еще задача или нет?
Для решения можно использовать линейное программирование, по исходному описанию 10A + 10Б рюкзаков по 5 отделений глубиной 50/60 см и шириной 10/15/20 см - не очень большая вариативность, можно перебрать все возможные комбинации, свести задачу к построению целочисленной линейной модели с правильным указанием целевой функции и решить задачу симплекс-методом.
Теорема Ферма, Доказательство Теоремы Ферма
 
Цитата
MCH написал:
ничего дополнительно не подключали?
в Python целочисленная арифметика по умолчанию - длинная.
Все целочисленные операции: +, -, *, // (целочисленное деление), ** (степень), % (остаток от деления) - производятся с длинными числами, не ограниченными по количеству знаков, ничего подключать не нужно.

Обычно длинка работает достаточно быстро, т.к. реализована на C++, сравнивал с вычислениями на dotNet (в частности PascalABC.NET), Python большие числа Фибоначчи рассчитал значительно быстрее, чем BigInteger в PascalABC
Теорема Ферма, Доказательство Теоремы Ферма
 
Ну и проверка данной "шутки" в Python:
Код
print(24576 ** 4 + 48767 ** 4 - 49535 ** 4)

результат:3072
Теорема Ферма, Доказательство Теоремы Ферма
 
Решение на Python в пару строчек:
Код
a, b, c, n = 3987, 4365, 4472, 12
print(f'a^n: {a**n}', f'b^n: {b**n}', f'c^n: {c**n}', f'a^n + b^n: {a**n + b**n}', f'a^n + b^n - c^n: {a**n + b**n - c**n}', sep='\n')

Результат:
Код
a^n: 16134474609751291283496491970515151715346481
b^n: 47842181739947321332739738982639336181640625
c^n: 63976656348486725806862358322168575784124416
a^n + b^n: 63976656349698612616236230953154487896987106
a^n + b^n - c^n: 1211886809373872630985912112862690
Изменено: MCH - 13.11.2023 13:11:12
Alisa GPT пишет свой первый макрос
 
Цитата
Бахтиёр написал:
видать намного умнее чем Алиса
Задал идентичный вопрос Алисе, получил точно такой же ответ, возможно Алиса переспрашивает у Chat GPT
Скрытый текст
Преобразование числа в буквы и обратно, Convert number to letters and back
 
А если сразу генерировать буквенно-цифровую строку из 10  символов, должно быть быстрее, а уникальность определяется огромным числом вариантов (но не гарантируется), если нужно, то можно обратно в число преобразовать
Равномерно распределить массив чисел
 
678, 804, 133, 114, остальное единицы - расчет зависает
Вычисление больших чисел
 
В зависимости от задач можно предложить:
1. Написать собственную UDF на VBA для расчета больших чисел
2. Использовать сторонние библиотеки, которые позволяют вычислять в Excel
https://www.cyberforum.ru/blogs/829006/blog5196.html
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=102871

3. Другой язык программирования с реализованной длинной арифметикой (Python, Java, C# и др.)
Изменено: MCH - 29.06.2023 12:18:36
Как рассчитать N-раз от даты и дня недели по определенным дням, отсчет от даты по конкретным дням
 
Цитата
koshak_pp написал:
формула перестаёт работать,
Формула массива вводится нажатием Ctrl+Shift+Enter
Как рассчитать N-раз от даты и дня недели по определенным дням, отсчет от даты по конкретным дням
 
Цитата
Сергей написал:
Соотв если менять кол-ва посещений и дату первой оплаты все предложенные формулы могут привести к разным результатам
Вы мою формулу из 6го сообщения смотрели, она достаточно универсальна, выходные и рабочие дни задаются строкой "0101000", где 0 - выходной, 1 - рабочий день.
Будут другие условия, формулу легко поправить.
Формула должна корректно вычислять любой график работы в горизонте ближайших - 98 дней (можно исправить на нужный)

И да, формула медленная и постоянна пересчитывается, что дает свои ограничения, по сравнению с математическими формулами.
Изменено: MCH - 21.06.2023 16:36:19
Как рассчитать N-раз от даты и дня недели по определенным дням, отсчет от даты по конкретным дням
 
Вариант, формула массива
Равномерно распределить массив чисел
 
Jack Famous, алгоритм зависит от задачи
Если слагаемых мало - даже перебор подойдет
Если искомая сумма небольшая - динамическое программирование
Если нет жесткого требования к оптимальности результата - жадный алгоритмы с частичными переборами с оптимизациями и отсечениями неперспективных ветвей решения используя эвристики
Можно линейное программирование прикрутить

Код Игоря считает быстро, когда решение точно есть, я пока не разобрался в алгоритме
Равномерно распределить массив чисел
 
Цитата
MCH написал:
поизучаю алгоритм
Пока с алгоритмом до конца не разобрался
Вижу перебор но с отсечением (как бы используем метод ветвей и границ), как только находим результат, останавливаем решение
Возможно ошибаюсь

Если поменять тип переменных с Variant на Long и Double, то можно еще немного ускорить
Что заметил, если точного решения нет (если нельзя ровно разделить на два равных по сумме списка) то расчет уходит в долгую
Например, первое число 999, второе число 1001 и далее 198 двоек
Разделить данный список на два равных по сумме невозможно, можно в одном списке 999 + 99*2, в другом 1001 + 99 *2 (или 999 + 100*2 и 1001 + 98*2), что динамикой решается очень быстро
Изменено: MCH - 16.06.2023 11:01:02
Равномерно распределить массив чисел
 
Ігор Гончаренко, Время работы впечатляет, поизучаю алгоритм
Равномерно распределить массив чисел
 
Цитата
Alien Sphinx написал:
Отработал на 20 числах. Тестировал и 30, но ушел в ошибку run out of memory
Протестировал свой код на 200 чисел (код не менял, добавил случайные данные), общая сумма для поиска - 13 млн, отработал не очень быстро но за разумное время.
Скорость решения и выделяемая память больше зависит от величины искомой суммы, и линейно зависит от количества слагаемых
Сложность алгоритма O(s * n), где s - искомая сумма, n - количество слагаемых, выделяемая память O(s)
Изменено: MCH - 15.06.2023 17:00:35
Равномерно распределить массив чисел
 
Сведение задачи к решению к "Задачи сумма подмножеств"
В первый список помещаем все слагаемые которые дают сумму не более половины общей суммы, во второй список - все остальные слагаемые

На базе решения динамическим программированием:
Количество слагаемых может быть большим (несколько сотен - легко)
Может работать с суммами с копейками
Для каждого слагаемого указывается количество данных слагаемых

Суммы распределяет максимально равномерно, если это возможно, но по количеству слагаемых списки могут различаться и не быть равномерными
Если нужно и количество слагаемых распределить примерно поровну, то можно реализовать другой алгоритм
Изменено: MCH - 15.06.2023 15:18:40
Комбинаторика: составить уникальные комбинации элементов массива
 
Нужны все перестановки:
9 5 2
9 2 5
5 9 2
5 2 9
2 9 5
2 5 9
или что-то другое?
VBA. Распределение паллет
 
Пришлите на почту из профиля или выложите здесь пример исходных данных
Озвучьте бюджет проекта.

На вскидку обычный рюкзак с двумя ограничениями (по весу и по кол-ву), возможно подойдет решение задачи "сумма подмножеств" и ее вариации. Алгоритмы аналогичные как в "задаче упаковки в контейнеры" (Bin packing problem) / "задача раскроя" (Cutting stock problem)
В зависимости от исходных данных и их кол-ва можно будет решить оптимально с помощью линейного программирования.
Изменено: MCH - 08.06.2023 09:09:24
Расположение товара на паллете, Зная длину и ширину оптимально разместить товар на паллете
 
В рамках текущего набора данных можно распределить все товары на 6 паллет
При этом паллеты будут высотой от 1500 до 1650 мм
Монопаллет (с одним товаром) будет только один
Остальные можно распределить - не более трех различных товаров на паллете
в двух - трех паллетах верхний ряд будет сборный

На сколько является важным потратить много времени на расчет укладки  и уложить товар на 6 паллет или допустимо раскидать по быстрому весь товар на 7 паллет, где будет 2 или 3 монопаллета, остальное распределено жадным алгоритмом без явной оптимизации?
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 131 След.
Наверх