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

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

اولا
كل عام و انتم بخير و اعاده الله عليكم بالمن و بالخير و البركه

بالامس كنا نقول رمضان اهلا و اليوم نقول رمضان مهلا فاللهم اغفر لنا ما مضي و اصلح لنا ما بقي واختم لنا رمضان بخير و انت راض عنا

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

وصف التحدي :

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

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

قم بكتابة دالة اسمها: compress_txt تأخذ سلسلة نصية STRING وتضغط الأحرف المتكررة المتتالية عن طريق استبدالها بحرف واحد متبوعًا بعدد مرات التكرار.
بحيث :

  • إذا كان الحرف غير مكرر، يبقى كما هو.
  • الحروف الكبيرة والصغيرة تعتبر مختلفة.
  • الرموز تبقى كما هي.

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

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

الاختبار 1
المدخلات (Inputs)
text = “aaabbcddd”
المخرجات (Outputs)
“a3b2c1d3”

الاختبار 2
المدخلات (Inputs)
text = “hhhhiiii!”
المخرجات (Outputs)
“h4i4!”

الاختبار 3
المدخلات (Inputs)
text = “a”
المخرجات (Outputs)
“a”

الاختبار 4
المدخلات (Inputs)
text = “aabb aa”
المخرجات (Outputs)
“a2b2 a2”

حل التحدي

def compress_txt(text):
    if not text:
        return ""

    compressed = []
    count = 1

    for i in range(1, len(text)):
        if text[i] == text[i - 1]:  
            count += 1
        else:
            compressed.append(f"{text[i - 1]}{count if count > 1 else ''}")
            count = 1

    compressed.append(f"{text[-1]}{count if count > 1 else ''}")
    
    return "".join(compressed)


4 إعجابات

بكرا التحدي هيبقي عن تحويل لنظام ال 0و1 الي اسمه نظام ال Binary number لو مش فاهمه ابحث عليه من النهارده لبكره ان شاء الله

3 إعجابات

هذه فديوهات انا قمت بمشاهدتها انها مفيدة جداً

إعجابَين (2)

مفيش أسهل من الـBirany مع بايثون، دايما بايثون عاملة تسهيلات، بس محتاجة شوية بحث.

3 إعجابات

عليز نصيحتي ؟
فكك ممن اللي بايثون عاملاه اتعلمه الاول و بعدين استخدمه جاهز في بايثون مش في دي بس لا في اي حاجه
يعني مثلا ال sorted() في ناس بتستخدمها بس متعرفش مثلا هي بشتغل ازاي

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

3 إعجابات

أنا بعرف أعملها من غير الدوال المساعدة في بايثون لأنها بتتعمل بمعادلة ومش صعبه بالدرجة في البرمجة، بس ليه اكتب مثلا 10 سطور وانا ممكن اعملها في سطر او سطرين.

وبالنسبة لـsorted، فإنت حمستني أحاول أعمل دالة شبهها.

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

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

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

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

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

هقولك انا كنت بعمل ايه :
انا كنت بحله بالدوال المدمجه عادي عشان مشتتش نفسي و عشان اسهل علي نفسي التفكير
وبعد ما اخلص كنت بحاول بقا اني امسح اكبر قدر اقدر عليه من الدوال المدمده و اعملها انا
لان انت مش هتعتمد ف حياتك كلها علي بايثون و مميزاتها

إعجابَين (2)

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

إعجابَين (2)

هتنزله ازاي دا صوت
بس حتي لو ينفع فاكس

إعجابَين (2)

إعجابَين (2)