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

Flood Fill

الصورة عبارة عن شبكة من الأعداد الصحيحة، حيث يمثّل كل عدد لون بكسل واحد. تحصل على الصورة في صورة قائمة من الصفوف، وبكسل بداية في الصف sr والعمود sc، وcolor جديد. أعد تلوين المنطقة التي تضم بكسل البداية: كل بكسل له لون بكسل البداية ويمكن الوصول إليه منه بالتحرك إلى الأعلى أو الأسفل أو اليسار أو اليمين عبر بكسلات من اللون نفسه. أعد الصورة بعد إعادة التلوين.

الدالة

floodFill(image: integer-2d-array, sr: integer, sc: integer, color: integer) → integer-2d-array
imageinteger-2d-array
الصورة على هيئة قائمة من الصفوف، رقم واحد لكل بكسل
srinteger
صفّ البكسل الأولي، مع بدء العدّ من 0
scinteger
عمود البكسل الابتدائي، مع احتساب العد من 0
colorinteger
اللون الجديد للمنطقة
تُرجعinteger-2d-array
الصورة بعد إعادة رسم المنطقة

القيود

  • 1 ≤ image.length ≤ 80
  • 1 ≤ image[i].length ≤ 80
  • لكل صف الطول نفسه.
  • 0 ≤ image[i][j], color ≤ 65535
  • 0 ≤ sr < image.length و0 ≤ sc < image[0].length

أمثلة

المدخلات
image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]sr = 0sc = 0color = 5
المخرجات
[[5, 5, 0], [5, 0, 5], [5, 5, 5]]
الشرح
تحتوي خانة البداية على اللون 1. يرتبط بها الرقم 1 الموجود على يمينها، والأرقام 1 نزولًا على العمود الأيسر وعلى طول الصف السفلي، والرقم 1 فوق الزاوية السفلية اليمنى، لذا تصبح الأرقام السبعة كلها 5. أما الرقمان 0 فلونهما مختلف، ويظلان كما هما.

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

challenge icon

سؤال إضافي

كيف سيتغير الحل إذا اعتُبرت وحدات البكسل التي تتلامس عند الزوايا فقط متصلة أيضًا؟

إعادة ضبط الشيفرة
def floodFill(image, sr, sc, color):
    # اكتب الكود هنا
حالات الاختبار

الحالة 1

الحالة 2

الحالة 3

المدخلات

image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]
sr = 0
sc = 0
color = 5

المتوقع

[[5, 5, 0], [5, 0, 5], [5, 5, 5]]