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

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

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

وصف التحدي :

**مستوي التحدي : **
متوسط برمجيا

قم بكتابة دالة اسمها: missingLetter تستقبل قيمة نصية من نوع string ، تقوم الـدالة missingLetter بالبحث عن الحرف المفقود حسب الترتيب الأبجدي لأول حرف مدخل في النص ، ثم قم بارجاع الحرف المفقود من نوع string وفي حالة عدم فقدان حرف قم بارجاع No Missing Letter .

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

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

الاختبار 1
المدخلات (Inputs)
txt = ‘rsuv’
المخرجات (Outputs)
‘t’

الاختبار 2
المدخلات (Inputs)
txt = ‘ghijk’
المخرجات (Outputs)
‘No Missing Letter’

الاختبار 3
المدخلات (Inputs)
txt = ‘vwyz’
المخرجات (Outputs)
‘x’

الاختبار 4
المدخلات (Inputs)
txt = ‘abcd’
المخرجات (Outputs)
‘No Missing Letter’

حل التحدي

def missingLetter(txt):
    all = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't','u', 'v', 'w', 'x', 'y', 'z']
    for i in range(len(all)):
        if all[i] == txt[0]:
            for n in range(len(txt)):
                if txt[n] != all[i]:
                    return all[i]
                i += 1

            return 'No Missing Letter'

3 إعجابات

الحل في سطر واحد (صعب القراءة) :

def missing_letter (text) : return [x for x in ["No Missing Letter", [i for i in __import__("string").ascii_lowercase[__import__("string").ascii_lowercase.index (sorted (text)[0]):__import__("string").ascii_lowercase.index (sorted (text)[-1])] if i not in text]] if x][-1]

الحل القابل للقراءة والتعديل :

def missing_letter (text):
    text = sorted (text)
    letters = __import__ ("string").ascii_lowercase
    missing_letter = [letter for letter in letters [letters.index (text[0]) : letters.index (text[-1])] if letter not in text]
    return missing_letter if missing_letter else "No Missing Letter"

امثله :

print (missing_letter ("abdeg")) # الناتج :['c', 'f']
print (missing_letter ("abc")) # الناتج :No Missing Letter
print (missing_letter ("bcdg")) # الناتج :['e', 'f']
print (missing_letter ("xz")) # الناتج :['y']
print (missing_letter ("abcdf")) # الناتج :['e']

ملاحظة : هيطلع error لو النص كان فاضي
ملاحظة : الكود بيجيب أي عدد من الحروف المفقوده، مش شرط حرف واحد

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

غلط يكبيبر راجع تاني و ابقا اتأكد من حلك في الموقع

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

ايه الغلط في الحل، الغلط انه بيرجع قائمه؟
خد اهو ولا تزعل نفسك :

def missing_letter (text):
    text = sorted (text)
    letters = __import__ ("string").ascii_lowercase
    missing_letter = [letter for letter in letters [letters.index (text[0]) : letters.index (text[-1])] if letter not in text]
    return missing_letter[0] if missing_letter else "No Missing Letter"

كل اللي انا عملته ان انا خليته يرجع الانداكس الاول من القائمة، يعني الكود مفهوش غلط ولا حاجه.

مش عارف ليه بحسك بتستنالي الغلطه !

انا هستنالك الغلطه ليه يسطا انت ضرتي ! يراجل دا انا بعزك من الله في الله و الله مش راجع كود حد زي ما براجع كودك , الفكره اني عايزك تحل اللي مطلوب منك بالنص عشان محدش يبقي يقفلك علي الغلطه :wink:

  • الكود مش فيه بس حتة ال return

لوجك الكود مش متماشي مع لوجيك التحدي و ان كان هيخرخ بعض المخرجات صح
جرب تحط كدا المدخل دا مثلا في الداله بتعتك و دالة الحل بتاع الكود الاصلي : “cabde” هتلاقيه طلع مخرج
“no missing letter” لانه هيرتبهم الاول و دا مش مطلوب في الكود

التحدي فيما يعني نصه ان كدا كدا الحروف هتبقي مترتبه بالشكل المراد للمستخدم و ناقص حرف من ترتيبهم فا استخدامك ل
sorted()
بيضيع من سرعة كودك و بيخرج بعض المخرجات خطأ للمدخلات الغير متوقعه من المستخدم

انا طبعا مقصدش اضايقك يا ملك بس عايزك تبقي اسد كدا مش بيغلط في تفاهات و علي الله و بالتوفيق ان شاء الله

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

انا كنت ممكن مستخدمش sorted، بس انا فهمت من اسم الداله «الحرف المفقود» إن الحرف لازم يكون مفقود وبالفعل كلمة «cabde» مفهاش أي حرف مفقود.

لا فيها اول حرف مفقود حسب الترتيب الابجدي لاول حرف و هو هيكون ال “d” لان الداله بدأت بال “c”

ألف شكر على المشاكل الحلوة اللي بقت تنزل مؤخرا فعلا محتاجة تفكير بقت

إعجابَين (2)

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

على فكره الحل الاخير ليا شغال على الموقع

كده الحل مظبوط؟ :

def missing_letter(text):
    letters = __import__("string").ascii_lowercase
    missing = [letters[i] for i in range(letters.index(text[0]), letters.index(text[0]) + len(text)) if i - letters.index(text[0]) < len(text) and letters[i] != text[i - letters.index(text[0])]]
    return missing[0] if missing else "No Missing Letter"
إعجاب واحد (1)