Browse Source

[teh_zad][5]

ypv 5 days ago
parent
commit
239f0b24e7

+ 1 - 0
ОАиП/2025-26/26гр/2 сем/issues_palindrom.md

@@ -6,6 +6,7 @@
 input_phrase = input("Введите вашу фразу: ")
 нет, надо использовать тот список слов, который задан
 [teh_zad][4]
+[teh_zad][5]
 
 Составить программу на Python, составляющую фразы из нескольких слов и проверяющая, является ли эта фраза палиндромом.
 [teh_zad][1]

+ 29 - 13
ОАиП/2025-26/26гр/2 сем/palindrom.py

@@ -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("Ни одна из составленных фраз не является палиндромом.")