Как можно написать функцию (на Python), которая:
Если мы возьмем все перестановки для A, B и C: ABC, ACB, BAC, BCA, CAB, CBA
Функция берет индекс и возвращает перестановку для этого индекса.
Например. F("ABC", 4) вернет "BCA"
Он должен выполняться за разумное время для очень больших наборов перестановок.
Должен ли он работать в разумные сроки и для очень больших индексов?
Здравствуйте и добро пожаловать в coderhelper! Не могли бы вы поделиться тем, что вы пробовали до сих пор?
Каков порядок перестановок? Всегда ли оно лексикографично?
См.
itertools.permutations
в качестве отправной точки, но, вероятно, не для "очень больших наборов перестановок".В книге Стэнтона и Уайта «Конструктивная комбинаторика» содержится много таких алгоритмов. Он дает псевдокод, похожий на Pascal, который достаточно легко перевести на Python. Как общий ресурс для всех таких вопросов, я настоятельно рекомендую его.