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

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

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

وصف التحدي :

متنساش تدعي لخواتنا ف غزه لو لسه عندك قلب و شوية دم

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

قم بكتابة دالة اسمها: unique تستقبل مصفوفة من نوع integer تقوم الدالة unique بالبحث عن الأرقام الفريدة في المصفوفة وثم تقوم بإرجاعها داخل مصفوفة جديدة.

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

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

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

الاختبار 1
المدخلات (Inputs)
arr = [1, 1, 1, 2, 1, 1]
المخرجات (Outputs)
[2]

الاختبار 2
المدخلات (Inputs)
arr = [3, -4, 3, 3, 3]
المخرجات (Outputs)
[-4]

الاختبار 3
المدخلات (Inputs)
arr = [2, 4, -2]
المخرجات (Outputs)
[2,4,-2]

الاختبار 4
المدخلات (Inputs)
arr = [2, 3, 2, 6, 2]
المخرجات (Outputs)
[3,6]

حل التحدي
def unique(arr):
    lista = []
    count = {}
    for i in arr:
        if i not in count:
            count[i] = 1
        else:
            count[i] += 1
    mininmum = min(count.values())
    for i in count:
        if count[i] == mininmum:
            lista.append(i)
    return lista
        

3 إعجابات

حل في سطر واحد :

def unique (array): return [num for num in array if num not in array[array.index(num)+1:] and (num not in array[:array.index(num)-1] or num == array[0])]

حل سهل للفهم (في 10 سطور) :

def unique (array):
    new_array = []
    for num in array:
        if num not in array[array.index(num)+1:]: #نتحقق ان الرقم ليس موجود في القائمه بعد هذه المره
            if  num == array [0]: #نريد ان نتحقق أن الرقم ليس موجود في القائمه قبل هذه المره، لاكن ان كان هو اول عنصر سيحدث مشكلة(لان اول عنصر ليس قبله عنصر)
                new_array.append (num) #إن كان هو العنصر الاول وليس هناك عنصر مثله في القائمه بعده فهو ليس مكرر
            else: #إن لم يكن العنصر الاول، فيجب معرفة إن كانقبله عنصر من نفس النوع
                if num not in array[:array.index(num)-1]: #نرى ان لم يكن موجود عنصر مثله قبله
                    new_array.append (num) #إنه ليس مكرر!
    return new_array #لنرجع القائمه 
إعجابَين (2)

إعجابَين (2)