|
|
@@ -1,16 +1,32 @@
|
|
|
-def is_palindrome(phrase):
|
|
|
- # Убираем пробелы и приводим строку к нижнему регистру
|
|
|
- cleaned_phrase = ''.join(phrase.split()).lower()
|
|
|
-
|
|
|
- # Проверяем, равна ли строка своему перевёрнутому варианту
|
|
|
- return cleaned_phrase == cleaned_phrase[::-1]
|
|
|
+from itertools import permutations
|
|
|
|
|
|
-# Составляем случайную фразу из предложенного набора слов
|
|
|
-words = ["мама", "мыла", "раму"]
|
|
|
-random_phrase = ' '.join(words)
|
|
|
+# Список слов
|
|
|
+words_list = ['мама', 'мыла', 'раму', "А", "роза", "упала", "на", "лапу", "Азора"]
|
|
|
|
|
|
-print(f"Составленная фраза: {random_phrase}")
|
|
|
-if is_palindrome(random_phrase):
|
|
|
- print("Фраза является палиндромом.")
|
|
|
+# Создаем пустое множество для хранения уникальных возможных фраз
|
|
|
+phrases = set()
|
|
|
+
|
|
|
+# Генерируем все возможные перестановки слов разной длины
|
|
|
+for r in range(1, len(words_list)+1):
|
|
|
+ for perm in permutations(words_list, r):
|
|
|
+ phrase = ' '.join(perm)
|
|
|
+ phrases.add(phrase)
|
|
|
+
|
|
|
+# Функция для проверки палиндрома
|
|
|
+def is_palindrome(s):
|
|
|
+ s_cleaned = ''.join(s.split()).lower() # убираем пробелы и приводим к нижнему регистру
|
|
|
+ return s_cleaned == s_cleaned[::-1]
|
|
|
+
|
|
|
+# Проверяем каждую фразу на палиндром
|
|
|
+palindromes = []
|
|
|
+for p in phrases:
|
|
|
+ if is_palindrome(p):
|
|
|
+ palindromes.append(p)
|
|
|
+
|
|
|
+# Выведем найденные палиндромы
|
|
|
+if palindromes:
|
|
|
+ print("Следующие фразы являются палиндромами:")
|
|
|
+ for p in palindromes:
|
|
|
+ print(p)
|
|
|
else:
|
|
|
- print("Фраза не является палиндромом.")
|
|
|
+ print("Ни одна из составленных фраз не является палиндромом.")
|