Menu
CoddyTech
flag Ar iconالعربيةdown icon

Rotting Oranges

تحصل على شبكة على شكل قائمة من الصفوف متساوية الطول. كل خلية تكون 0 (فارغة)، أو 1 (برتقالة طازجة)، أو 2 (برتقالة متعفنة). في كل دقيقة، تتعفن كل برتقالة طازجة تشترك في ضلع مع برتقالة متعفنة، سواء كان ذلك من الأعلى أو الأسفل أو اليسار أو اليمين. أعد عدد الدقائق حتى لا تبقى أي برتقالة طازجة، أو -1 إذا تعذّر تعفّن بعض البرتقالات الطازجة. تحتاج الشبكة التي لا تحتوي على برتقالات طازجة في البداية إلى 0 دقيقة.

الدالة

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
الشبكة، قائمة واحدة من 0 و1 و2 لكل صف
تُرجعinteger
عدد الدقائق حتى لا تبقى أي برتقالة طازجة، أو -1 إذا لم يحدث ذلك مطلقًا

القيود

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • كل صف له الطول نفسه.
  • كل عنصر grid[i][j] يساوي 0 أو 1 أو 2.

أمثلة

المدخلات
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
المخرجات
6
الشرح
بكتابة الخلايا بالشكل (صف، عمود)، يبدأ التعفّن من (0,0) ويتبع المسار الوحيد: (0,1) عند الدقيقة 1، و(0,2) و(1,1) عند الدقيقة 2، و(2,1) عند الدقيقة 3، و(2,0) و(2,2) عند الدقيقة 4، و(2,3) عند الدقيقة 5. البرتقالة عند (1,3) تلامس (2,3) فقط، لذا فهي آخر ما يتعفّن، عند الدقيقة 6.

lock icon+21 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

افترض أن كل برتقالة طازجة تحتاج إلى عدد خاص بها من الدقائق لتتعفن بعد تعفّن برتقالة مجاورة. كيف ستجد وقت الانتهاء إذن؟

إعادة ضبط الشيفرة
def orangesRotting(grid):
    # اكتب الشيفرة هنا
حالات الاختبار

الحالة 1

الحالة 2

الحالة 3

المدخلات

grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]

المتوقع

6