Задать вопрос
Core2Quad777
@Core2Quad777

Как получить все варианты перестановок?

Есть 6-значное число, в нем убраны 1 и последняя цифра, в результате чего получается *2023*. Нужно найти все возможные варианты подобного шестизначного числа (наприме 120231, 120232, 120233 и т.д)
  • Вопрос задан
  • 764 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
0xD34F
@0xD34F
from itertools import product

head = list(map(str, range(1, 10)))
center = [ '2023' ]
tail = list(map(str, range(1, 10)))

numbers = [ int(''.join(n)) for n in product(head, center, tail) ]
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AlexNest
@AlexNest
Работаю с Python/Django
Самый простой вариант - с помощью циклов и форматирования.
Ответ написан
Комментировать
KeyDevSS
@KeyDevSS
Программист Python
Вы можете использовать рекурсивный алгоритм для получения всех возможных перестановок. Давайте посмотрим на следующий код на Python:

def permute(data, i, length):
    if i == length:
        print(''.join(data))
    else:
        for j in range(i, length):
            data[i], data[j] = data[j], data[i]
            permute(data, i + 1, length)
            data[i], data[j] = data[j], data[i]

number = '2023'
n = len(number)
data = list(number)
permute(data, 0, n)


Здесь мы используем рекурсивную функцию permute, которая принимает три аргумента: исходные данные data, индекс i и длину length. Изначально мы вызываем функцию с i = 0 и length = n (длина исходных данных).

Внутри функции permute мы используем цикл for для перебора всех возможных пар индексов i и j, где i - текущий индекс, j - индекс элемента для обмена. Мы меняем местами элементы data[i] и data[j], затем рекурсивно вызываем permute с увеличенным индексом i, чтобы получить все возможные перестановки для оставшейся части данных. После этого мы возвращаем элементы data[i] и data[j] обратно к их оригинальным значениям для того, чтобы вернуться к предыдущему состоянию и перебрать следующую пару i и j.

Когда мы доходим до конца данных, т.е. i == length, мы вызываем функцию print, чтобы вывести текущее состояние данных. Затем происходит возврат и мы продолжаем перебирать возможные комбинации.

В результате запуска этого кода вы получите все возможные перестановки числа 2023.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы