Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 25.12.2018
Сообщений: 12

Оптимизация цикла

26.05.2020, 16:34. Показов 2053. Ответов 4

Студворк — интернет-сервис помощи студентам
В функцию приходит число. Необходимо найти сумму всех чисел, образованных из перестановки цифр (с дубликатами).

Примеры:
sum_arrangements(98) returns 89+98 = 187
sum_arrangements(123) returns 123 + 132 + 213 + 231 + 312 + 321 = 1332

Сама задача:https://www.codewars.com/kata/... ain/python

В коде я превращаю число в строку, получаю список кортежей (например ('1', '2', '3')), завожу результирующую переменную, в цикле привожу кортеж к строке и после к числу. Ну и прибавляю.

У меня начинает падать на числах с десятью цифрами.

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

Мой код:
Python
1
2
3
4
5
6
7
8
from itertools import permutations
 
def sum_arrangements(num):
    i = permutations(str(num))
    r = 0
    for t in i:
        r += int(''.join(t))
    return r
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2020, 16:34
Ответы с готовыми решениями:

Оптимизация цикла
Всем привет, прохожусь по excel файлу и суммирую значения по артиклу товара, как можно ускорить? Сейчас 2500 строк обрабатываются около...

Оптимизация тройного цикла
Подскажите, как лучше написать код, чтобы задача быстрее решалась na = int(input()) a = nb = int(input()) b = nc = int(input())...

Оптимизация кода Python, цикла for
Здравствуйте! :) Я относительно недавно в программировании, подскажите как можно оптимизировать цикл for в Python 3.9 Код прилагаю в...

4
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
26.05.2020, 17:24
задача явно на математику.

Добавлено через 18 минут
вроде так:
Python
1
2
3
4
from math import factorial
digs = [1, 2, 3]
sum_digs = sum(digs) * factorial(len(digs)-1)
print(sum([sum_digs * 10 ** i for i in range(len(digs))]))
0
1 / 1 / 0
Регистрация: 25.12.2018
Сообщений: 12
27.05.2020, 13:20  [ТС]
Как называется алгоритм? Почитать бы, чтобы дальше оптимизировать.
Подправил код под себя, но всё валится Execution Timed Out (12000 ms).
Python
1
2
3
4
5
6
7
8
9
from math import factorial
 
def sum_arrangements(num):
    digs = list(map(int, str(num)))
    sum_digs = sum(digs) * factorial(len(digs)-1)
    result = 0
    for i in range(len(digs)):
        result += sum_digs * 10 ** i
    return(result)
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
27.05.2020, 13:40
Лучший ответ Сообщение было отмечено cleanbrain как решение

Решение

Python
1
2
3
4
5
6
7
8
from math import factorial
digs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]*1000
sum_digs = sum(digs) * factorial(len(digs)-1)
res = 0
for _ in digs:
    res += sum_digs
    sum_digs *= 10
print(res)
1
1 / 1 / 0
Регистрация: 25.12.2018
Сообщений: 12
27.05.2020, 14:09  [ТС]
Спасибо, красивое решение, сработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2020, 14:09
Помогаю со студенческими работами здесь

Оптимизация цикла
Здравствуйте! Организую перенос из SQL в Excel (сам эксель содержит ID), после чего по ID (в экселе) присваиваю ФИО (сама задача обширнее,...

Оптимизация цикла
Помогите, пожалуйста, оптимизировать цикл. Есть файл, в нем много текста. Надо вывести этот текст по абзацам и обработать (первые...

Оптимизация Цикла
добрый день ситуация такая, ассортимент товаров очень велик и постоянно увеличивается на каждый товар заводится карточка на...

Оптимизация цикла
Есть такой код: % Генерация точек в объеме N=20 for i=(1:N) pointx(i)=unifrnd(x_min,x_max,1,1); ...

Оптимизация цикла for
Исходные данные: имеется цикл for, прерывание которого невозможно(должен выполнить все итерации). #include <iostream> int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru