سلسلة حل المشكلات (Problem Sloving) اليوم السادس

التحدي رقم 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

خد مساعده **خطوات الحل**

خطوات الحل:

  1. تحويل جميع الأحرف إلى أحرف صغيرة.
  2. إزالة جميع الأحرف غير الأبجدية الرقمية (مثل المسافات والعلامات).

مثال:

المدخل:

s = “A man, a plan, a canal: Panama”

الخطوات:

  1. تحويل الأحرف إلى صغيرة: "a man, a plan, a canal: panama"
  2. إزالة الأحرف غير الأبجدية الرقمية: "amanaplanacanalpanama"
  3. التحقق من التماثل:
  • "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]

4 إعجابات

الدالة :

def is_palindrome (string): return [char for char in string.lower () if char.islower () or char.isdigit ()] == [char for char in string[::-1].lower () if char.islower () or char.isdigit ()]

طريقه الاستخدام :

print (is_palindrome ("‘A man, a plan, a canal: Panama’")) # الناتج : True 
إعجابَين (2)

اهم حاجه تكتبها ف سطر واحد :joy:

إعجابَين (2)

هههههههه :face_with_tears_of_joy:
إيه المشكلة :face_with_tears_of_joy:

ممكن لما التحديات تصعب احتاج أكتر من سطر،
من يدري.

إعجاب واحد (1)