التحدي رقم 6 لليوم رقم 6 من رمضان
اولا
كل عام و انتم بخير و اعاده الله عليكم بالمن و بالخير و البركه
لا تنشغل بالحل كثيرا كي لا تهمل عباداتك الاصليه
و لا تنسي تجديد نيتك فأن طلب العلم عباده
لا تنسوني و اخي المعتقل سياسيا من جميل دعائكم
وصف التحدي :
**مستوي التحدي : **
اعلي من سهل برمجيا
التحقق من الجملة إذا كانت (Palindrome)
:
الجملة تعتبر **باليندروم** (Palindrome)
إذا كانت تقرأ بنفس الشكل عند قراءتها من الأمام أو من الخلف.
المطلوب : اكتب دالة isPalindrome
تأخذ نصًا s
كمدخل، وتُعيد:
true
إذا كانت الجملة باليندروم.false
إذا لم تكن كذلك.
ملحوظه : تقدر تحل التحدي و تتحقق من صحته من خلال الموقع هنا اهو :
موقع سلسلة حل المشكلات (Problem Sloving)
بس خد بالك لو هتحل ع الموقع لازم اسم الداله يكون زي الاسم اللي موجود في وصف التحدي
أضغط لرؤية المخرجات المتوقعة عشان تتيست الكود بتاعك
الاختبار 1
المدخلات (Inputs)
s = ‘A man, a plan, a canal: Panama’
المخرجات (Outputs)
true
الاختبار 2
المدخلات (Inputs)
s = ‘race a car’
المخرجات (Outputs)
false
الاختبار 3
المدخلات (Inputs)
s = ’ ’
المخرجات (Outputs)
true
الاختبار 4
المدخلات (Inputs)
s = ‘madam’
المخرجات (Outputs)
true
خد مساعده **خطوات الحل**
خطوات الحل:
- تحويل جميع الأحرف إلى أحرف صغيرة.
- إزالة جميع الأحرف غير الأبجدية الرقمية (مثل المسافات والعلامات).
مثال:
المدخل:
s = “A man, a plan, a canal: Panama”
الخطوات:
- تحويل الأحرف إلى صغيرة:
"a man, a plan, a canal: panama"
- إزالة الأحرف غير الأبجدية الرقمية:
"amanaplanacanalpanama"
- التحقق من التماثل:
"amanaplanacanalpanama"
يقرأ بنفس الشكل من الأمام والخلف.
الناتج:
true
حل التحدي
def isPalindrome(s):
# نحول جميع الأحرف إلى أحرف صغيرة
s = s.lower()
# هنا هنشيل اي حاجة تكون غير حرف ابجدي او رقم اللي هو يعني اي حاجة غير num , alpha
filtered_s = ''.join(char for char in s if char.isalnum())
# هنا نتحقق من هل تقرأ من الخلف للامام زي ما بتقرأ من الامام للخلف و نرجع النتيجة
return filtered_s == filtered_s[::-1]