(^.^)
Козак з казок.
Уже лисі ліси… Лежу.
Уже ребра татар бережу.
Умру. Суму сум — у сурму,
А мене нема…
(^.^)
Паліндром - це рядок, який однаково читається зліва направо і справа наліво.
Кожен рядок віршу є окремим паліндромом (вірш-паліндром):
(Олег Будзей. Із збірки «З архіву душі», 1999)
Креневич А.П. Python у прикладах і задачах. Частина 1. Структурне програмування , 2017.
Спочатку опишемо термінальні випадки.
Для цього проаналізуємо найпростіші рядки. Очевидно, що порожній рядок або рядок, що складається з одного символа (наприклад, "", "a") є симетричним.
Тепер побудуємо рекурсивний виклик. Очевидно, що якщо перший і останній символи рядка є однаковими і рядок без них є симетричним, то вихідний рядок є симетричним.
# РЕКУРСІЯ
def is_pal(s):
if len(s) <= 1: # Базовий випадок
return True
else:
log1 = s[0] == s[len(s)-1] # умова, що 1-й і останній символи однакові
log2 = is_pal(s[1 : len(s) - 1]) # умова, що рядок без першого і останнього
# символа є симетричним – Рекурсивний випадок
return log1 and log2 # рядок симетричний, якщо обидві умови істині
s = input().replace(' ', '')
rez = is_pal(s)
if rez: print('YES')
else: print('NO')
# СИМВОЛЬНИЙ ЗРІЗ
s = input().split()
a = ''
for i in s:
a = a + i
if a == a[::-1]:
print('YES')
else:
print('NO')
# СИМВОЛЬНИЙ ЗРІЗ 2
s = input().replace(' ', '')
if s == s[::-1]:
print('YES')
else:
print('NO')
# РЕКУРСІЯ
def is_pal(n):
if len(n) <= 1: # Базовий випадок
return True
else:
log1 = n[0] == n[len(n)-1] # умова, що 1-а і остання цифри однакові
log2 = is_pal(n[1 : len(n) - 1]) # умова, що число без першої і останньої
# цифр є паліндромом – Рекурсивний випадок
return log1 and log2 # паліндромом, якщо обидві умови істині
n = input()
rez = is_pal(n)
if rez: print('Yes')
else: print('No')