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

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

26.05.2020, 16:34. Показов 2031. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru