• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 4. строки

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«анаграмма»

Представьте, что вы — лингвист-археолог, и вы нашли древний артефакт с набором символов. Вы предполагаете, что это анаграмма — головоломка, в которой нужно переставить буквы заданного слова, чтобы получилось другое слово. Чтобы взломать шифр, вам необходимо составить полный словарь всех возможных комбинаций символов, которые могли бы быть зашифрованы.

Ваша задача — написать программу, которая принимает на вход одно слово (набор символов) и выводит все уникальные комбинации (перестановки) этих символов. Для удобства анализа и сравнения с древними текстами, все полученные комбинации должны быть отсортированы в алфавитном порядке.

Например, если на артефакте начертано слово «кот», ваша программа должна сгенерировать и вывести слова «кот», «кто», «окт», «отк», «тко», «ток».

 

Формат ввода

Слово для генерации перестановок (string). Это может быть одна строка без пробелов, содержащая буквы или цифры.

Формат Вывода

Все уникальные перестановки символов входного слова, отсортированные в алфавитном порядке. Каждая перестановка выводится на новой строке (string).

Пример

Ввод

дом

Вывод

дмо
дом
мдо
мод
одм
омд

Подсказка

Тут подсказки не будет, решай сам!

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Для решения этой сложной задачи нам понадобится специальный инструмент
# для создания перестановок. Мы импортируем его из стандартной библиотеки 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

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!