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

التحدي رقم 13 لليوم رقم 13 من رمضان

اولا
كل عام و انتم بخير و اعاده الله عليكم بالمن و بالخير و البركه
لا تنشغل بالحل كثيرا كي لا تهمل عباداتك الاصليه
و لا تنسي تجديد نيتك فأن طلب العلم عباده
لا تنسوني و اخي المعتقل سياسيا من جميل دعائكم

وصف التحدي :

**مستوي التحدي : **
أعلي من سهل أقل من متوسط برمجيا

قم بكتابة دالة اسمها: find_prefix تستقبل قيمة نصية String تحتوي على جزء من بداية كلمة، ومصفوفة Array تحتوي على عدة كلمات. تقوم الدالة بإرجاع مصفوفة تحتوي على الكلمات التي تبدأ بنفس النص الذي تم تمريره. إن لم تحتوي المصفوفة على شيء مطابق، فقم بإرجاع مصفوفة فيها القيمة النصيّة
'No matches' .

ملحوظه : كلمة مصفوفة يعني ليست ← [,]

ملحوظه : تقدر تحل التحدي و تتحقق من صحته من خلال الموقع هنا اهو :
موقع سلسلة حل المشكلات (Problem Sloving)
بس خد بالك لو هتحل ع الموقع لازم اسم الداله يكون زي الاسم اللي موجود في وصف التحدي

أضغط لرؤية المخرجات المتوقعة عشان تتيست الكود بتاعك

الاختبار 1
المدخلات (Inputs)
words = [‘Nouf’, ‘Abdullah’]
text = ‘Gh’
المخرجات (Outputs)
[‘No matches found’]

الاختبار 2
المدخلات (Inputs)
words = [‘Reassemble’, ‘Remainder’, ‘Room’, ‘Receive’]
text = ‘re’
المخرجات (Outputs)
[‘Reassemble’,‘Remainder’,‘Receive’]

الاختبار 3
المدخلات (Inputs)
words = [‘Compared’, ‘Coding’, ‘Career’, ‘Coderhub’, ‘Cold’, ‘Call’]
text = ‘co’
المخرجات (Outputs)
[‘Compared’,‘Coding’,‘Coderhub’,‘Cold’]

الاختبار 4
المدخلات (Inputs)
words = [‘Save’, ‘Saudi’, ‘Satr’, ‘Send’, ‘Salt’, ‘Super’, ‘Sample’]
text = ‘sa’
المخرجات (Outputs)
[‘Save’,‘Saudi’,‘Satr’,‘Salt’,‘Sample’]

حل التحدي

def find_prefix(words,text):
    lista = []
    for n in words :
        i = n.lower()
        if text.lower() in i:
            lista.append(n)
    if not lista:
        lista.append('No matches found')
    return lista

حل التحدي لو فهمته نفس الفهم اللي احمد في الكومنتات اتكلم عليه
def find_prefix(words,text):
    lista = []
    for n in words :
        i = n.lower()
        if text.lower() in i[0:len(text)+1:]:
            lista.append(n)
    if not lista:
        lista.append("No matches found")

    return lista

إعجابَين (2)

موقعك بيقول إن حلك مش صحيح :joy:

وده حلى :

def find_prefix (words, text): return [x for x in [f"No word start with {text}", [word for word in words if word.startswith (text)]] if x][-1]

انت قايل في شرح التحدي إن النص يكون في اول كلمه من الكلمات اللي في القائمة، مثلا “ah” هما اول حرفين في “ahmad” ، بس الحل بتاعك انت كاتب فيه in، يعني مش شرط يكون اول الكلمة، مثلا “ma” موجودين في “ahmad” بس مش اول حرفين.

ايه الصح، الشرح ولا الحل ؟

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

ايه الغلط في الكود ده اللي مخلي الموقع بتاعك يقول إن الحل غلط؟ :

def find_prefix (words, text): return [x for x in [["No matches found"], [word for word in words if word.startswith (text)]] if x][-1]

الغريب انه شغال عادى جدا،
ياريت تخلي الموقع يعرض تفاصيل اكتر عن الخطأ

خلاص عرفت المشكله، المشكله اني مش عامل النص والكلمه .lower ()، مع إنك مقولتش إن احنا نحوله لـlower بس ماشي . .

عموما ده الحل بعد التعديل :

def find_prefix (words, text): return [x for x in [["No matches found"], [word for word in words if word.lower().startswith (text.lower())]] if x][-1]

مشكلة النهارده سهله اوي ياريت بكرا تكون اصعب شويه

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

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

سؤال رائع مش رائع لا جامد جدا والله ما شاء الله
بص يا ملك لو لاحظت ان الجزء من الكلمه اللي هتتمرر انا قايلك عليه هو جزء من بداية كلمة بالفعل
يعني هو كدا كدا بيدل علي البدايه اللي هتتضاف يعني لو مش موجود فا مش هيبقي موجود في الاول
بمعني ان جزء الكلمه هيكون مقطوع اصلا من الكلمه نفسها

ملاحظه جميله ممكن كانت المفروض اوضحها شويه في الوصف بس معلش بقا مخدتش بالي ,عاش عليها ما شاء الله

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

ما الصعب بتتخانقوا فيه ومش بتحلوه صح :sleepy_face: :man_shrugging:

الحل بتاعك اصلا مش دقيق - حسب فهمك اللي هو مشابه لنفس فكرة احمد - هو شغال علي امدخلات دي بس بس لو حطينا ال text بعدد حروف اكبر من حرفين ؟ يعني مثلا شوف المدخل دا :

المدخلات (Inputs)
words = [‘lavi’, ‘lanman’,‘laeo’]
text = ‘lam’
المخرجات بتعتك (your Outputs)
[‘lavi’, ‘lanman’,‘laeo’]

المخرجات الصح (Outputs)
[‘No matches found’]

شوف في البوست الحل اللاخر للتحدي و هتفههم الفكره بتعتك ازاي تتطبق

إعجابَين (2)

هجرب اعملها إن شاء الله بس هو انا حليت حسب المكتوب أن أول حرفين زي اول حرفين

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


كدا صح اعتقد بس بردو كان سهل اوي

إعجابَين (2)

اللي مكتوب ان المدخل الصغير هو بداية المدخل الكبير مش محدد كام حرف و لذلك لو عايز تشوف حلها انا عدلته كتبته فوق

إعجابَين (2)