حل تحدي ببايثون

التحدي

  • لديك مصفوفة من الأرقام الصحيحة (مثل [3, 2, 5, 1]).

  • مهمتك هي تعديل هذه الأرقام بحيث تصبح المصفوفة مرتبة تصاعديًا.

  • بمعنى أن كل عنصر في المصفوفة يجب أن يكون أكبر من أو يساوي العنصر الذي يسبقه.

  • مثال: [3, 3, 5, 5] مقبول لأن كل رقم >= الرقم الذي قبله.

  • كيفية التعديل؟

  • يمكنك زيادة قيمة أي رقم بمقدار 1 أو أكثر.

  • كل مرة تزيد فيها قيمة رقم بمقدار 1، تكسب نقطة واحدة.

  • الهدف: إيجاد أقل عدد ممكن من النقاط لجعل المصفوفة مرتبة كما هو مطلوب.

مثال عملي

إذا كانت المصفوفة: [3, 2, 5, 1]، فإليك الخطوات الممكنة:

  1. اجعل العنصر الثاني (2) مساوياً أو أكبر من العنصر الأول (3)، أي عدّله إلى 3. (تكلفة: 1 نقطة).

  2. العنصر الثالث (5) لا يحتاج إلى تعديل لأنه بالفعل أكبر من العنصر الثاني.

  3. العنصر الرابع (1) يحتاج إلى تعديل ليصبح مساوياً أو أكبر من العنصر الثالث (5)، أي عدّله إلى 5. (تكلفة: 4 نقاط).

إجمالي النقاط: 1 + 4 = 5 نقاط

طبعا الداله ف الاخر هتطلعلي عدد النقاط اللي استخدمتها

و دا مثال علي الامدخلات و المخرجات عشان تراجع حلك:


المدخلات (Inputs)

arr = [3, 2, 5, 1, 7]

المخرجات (Outputs)

5

النص المساعد :


from typing import List

def increasing_array(arr: List[int]) -> int:

# write your code here ^_^

ملحوظه :

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

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


def increasing_array(arr):

#the arr must be anly int

# write your code here ^_^

اضغط هنا لرؤية الحل
from typing import List

def increasing_array(arr: List[int]) -> int:
    total = 0  # لتتبع مجموع النقاط المطلوبة

    for i in range(1, len(arr)):
        if arr[i] < arr[i - 1]:  # إذا كان العنصر الحالي أصغر من العنصر السابق
            diff = arr[i - 1] - arr[i]  # احسب الفرق
            arr[i] += diff  # عدّل العنصر الحالي ليصبح مساوياً للعنصر السابق
            total += diff  # أضف الفرق إلى المجموع

    return total  # أعد عدد النقاط المطلوبة

# اختبار الكود
print(increasing_array([3, 2, 5, 1, 7]))  # الناتج: 5

5 إعجابات