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

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

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

وصف التحدي :

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

قم بكتابة دالة تستقبل مصفوفة من القيم النصية، تقوم تلك الدالة بمقارنة القيم النصية وإرجاع true في حال كان عدد characters لجميع النصوص متطابق، وإرجاع false في حال خلاف ذلك. اذا كانت المصفوفة فارغة أو تحتوي على عنصر واحد فقط، قم بإرجاع القيمة false .

ملحوظه : كلمة مصفوفة يعني ليست ← [,]
ملحوظه : لو شايفه ساهل خلي المدخل يكون String مش ليست(مصفوفه) و بالتالي هيكون في خطوة كدا زيادة مثال علي المدخل في الحاله دي :-
"Khalid Sultan AlDana Johrah Ghadah"

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

الاختبار 1
المدخلات (Inputs)
words = [‘A’, ‘B’]
المخرجات (Outputs)
true

الاختبار 2
المدخلات (Inputs)
words = [‘Khalid’, ‘Sultan’, ‘AlDana’, ‘Johrah’, ‘Ghadah’]
المخرجات (Outputs)
true

الاختبار 3
المدخلات (Inputs)
words = [‘Satr’, ‘CoderHub’]
المخرجات (Outputs)
false

الاختبار 4
المدخلات (Inputs)
words = [‘123’, ‘456’, ‘789’]
المخرجات (Outputs)
true

حل التحدي

def str_len_comparison(words):
    if len(words) <= 1:
        return False

    else:
        for i in words:
            if len(i) != len(words[0]):
                return False
            
        return True

حل التحدي لو المدخل `String`

def str_len_comparison(words):
    if len(words) <= 1:
        return False

    else:
        splited_string = words.split()
        for i in splited_string:
            if len(i) != len(splited_string[0]):
                return False
            
        return True

4 إعجابات

انا عملت الداله تنفع لـ str أو list، هذه هي الدالة :

def is_all_one_length (input): return (len (set ([len (x) for x in (input if type (input) is list else input.split(" "))])) == 1) if len (input if type (input) is list else input.split(" ")) > 1 else False 

أمثله عليها :

print (is_all_one_length ("ahmad ahmed")) # الناتج : True 
print (is_all_one_length (["and", "or"])) # الناتج : False
إعجاب واحد (1)

إعجابَين (2)

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

إعجابَين (2)

راجع الحل انت عقدت الدنيا و شتت دماغك هديك هنت بسيط جدا :

الهنت

افترض انك عندك صاله باطوال معينه انت متعرفهاش تمام
و جالكم الناس اللي بيروجوا لمنتجاتهم علي الباب و انت حبيت تجرب سجادهم
فا خدت منه كذا واحده بكذا طول
لما تخش عند الصاله بقا هتعمل ايه ؟

لو لسه مش عارف هتعمل ايه :
فا الطبيعي اني هفرش كل واحده من اللي معايا و اشوفهم بيساووي الاطوال الثابته اللي عندي ( اطوال الصاله )
ولا لا
لو بيساوي هقول للمروج True لو مش مظبوطه ايا كان اطول او اقصر من اطوال الصاله هقوله False

فكر شويه كمان و لو معرفتش شوف فكره الحل و هتفهم كل حاجه

ولما تحلها او تفهما ابقا قولي عشان هوضحلك فكره كدا في حته ال return

إعجابَين (2)

ده نفس الحل ولاكن بشكل منظم مع شرح لكل جزء بالكومنتس (#) :

def is_all_one_length (input): # داله تتحقق من ان جميع القيم بداخلها متساويه الطول
    lens_input = set () # نصنع متغير من نوع set لان set لا تسمح بتكرار العناصر داخلها
    input = input if type (input) is list else input.split (" ") # اذا كان المدخل list لا يحدث شيء، لاكن إن كان شيء آخر (str) يتحول بـ.split (" ")
    if len (input) <= 1: return False # نرجع False إن كان طول المدخل 1 او اقل
    for x in input: lens_input.add (len (x)) #نصيف طول العنصر
    return len (lens_input) == 1 # اذا كانت جميع العناصر بنفس الطول وlen لا تكرر العناصر، سيكون طول الـset يساوي 1
إعجابَين (2)

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

def is_all_one_length(input_data):
    if isinstance(input_data, str):
        input_data = input_data.split()

    if len(input_data) <= 1:
        return False

    return len({len(x) for x in input_data}) == 1
3 إعجابات