🎉 恭喜! 🎉
你出色地完成了任务!这是一个不小的挑战,但你找到了正确答案。你离编程大师又近了一步!继续保持,每一步都让你更强大。
想象一下,你是一名语言考古学家,发现了一件带有字符集的古代文物。你推测这很可能是一个字谜——需要重新排列给定单词的字母以得到另一个单词的谜题。为了破解密码,你需要编写一个完整的词典,包含所有可能被加密的字符组合。
你的任务是编写一个程序,接收一个单词(字符集)作为输入,并显示这些字符的所有唯一组合(排列)。为了方便分析与古代文本进行对比,所有生成的组合应按字母顺序排序。
例如,如果文物上刻有单词“cat”,你的程序应生成并显示单词“cat”、“act”、“atc”、“tac”、“tca”、“cta”。
用于生成排列(字符串)的单词。它可以是一个不含空格、包含字母或数字的单行字符串。
输入单词的所有唯一符号重排,按字母顺序排序。每个排列显示在新的一行(字符串)中。
房屋
DMO
房子
MDO
修改
ODM
OMD
# Для решения этой сложной задачи нам понадобится специальный инструмент
# для создания перестановок. Мы импортируем его из стандартной библиотеки itertools.
from itertools import permutations
# Считываем слово, которое ввел пользователь
word = input()
# Генерируем все возможные перестановки символов в слове.
# Функция permutations возвращает объекты-кортежи, например, для слова "ab" это будут ('a', 'b') и ('b', 'a').
all_perms_tuples = permutations(word)
# Чтобы избавиться от дубликатов (например, для слова "aab"), мы используем множество (set).
# В цикле мы преобразуем каждый кортеж обратно в строку и добавляем в множество.
# Множество автоматически сохранит только уникальные строки.
unique_perms_set = set()
for p in all_perms_tuples:
# Метод .join() склеивает символы из кортежа в одну строку.
# Например, ('д', 'о', 'м') превращается в "дом".
unique_perms_set.add("".join(p))
# Для сортировки нам нужен список, поэтому преобразуем множество в список.
sorted_perms = sorted(list(unique_perms_set))
# Теперь, когда у нас есть отсортированный список уникальных перестановок,
# мы выводим каждый элемент этого списка на новой строке.
for perm in sorted_perms:
print(perm)
🎉 恭喜! 🎉
你出色地完成了任务!这是一个不小的挑战,但你找到了正确答案。你离编程大师又近了一步!继续保持,每一步都让你更强大。
AD
广告
正在运行代码...