حقل الأزهار

حقل الأزهار

صعب

مقدمة

Flower Field هي إعادة تخيّل عطوفة للعبة الشهيرة Minesweeper. هدف اللعبة هو العثور على كل الأزهار في الحديقة باستخدام تلميحات رقمية تشير إلى عدد الأزهار المجاورة مباشرة (أفقيًا، وعموديًا، وقطريًا) لمربع. صدرت لعبة "Flower Field" ضمن إصدارات إقليمية من Microsoft Windows في إيطاليا وألمانيا وكوريا الجنوبية واليابان وتايوان.

التعليمات

مهمتك هي إضافة أعداد الأزهار إلى المربعات الفارغة في حديقة "حقل الأزهار" المكتملة. الحديقة نفسها لوحة مستطيلة تتكوّن من مربعات، إما فارغة (' ') وإما زهرة ('*').

لكل مربع فارغ، احسب عدد الأزهار المجاورة له (أفقيًا، رأسيًا، وقطريًا). إذا لم يكن للمربع الفارغ أي أزهار مجاورة، فاتركه فارغًا. وإلا فاستبدله بعدد الأزهار المجاورة.

على سبيل المثال، قد تستلم لوحة بأبعاد 5 x 4 مثل هذه (المسافات الفارغة ممثَّلة هنا بالمحرف '·' لعرضها على الشاشة):

·*·*·
··*··
··*··
·····

والتي ينبغي أن يحوّلها الكود إلى هذا:

1*3*1
13*31
·2*2·
·111·

تنسيق الحديقة

تُمثَّل الحديقة بسلسلة نصية منتهية بـ null، مع محرف سطر جديد في نهاية كل صف.

ومن الأمثلة على ذلك " \n * \n \n"

السجلات

السجل الاستخدام النوع الوصف
$a0 إدخال عنوان سلسلة الإدخال النصية المنتهية بـ null
$a1 إدخال/إخراج عنوان سلسلة الإخراج النصية المنتهية بـ null
$t0-9 مؤقت أي للتخزين المؤقت
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
MIPS Assembly Exercism

مستعد لبدء حقل الأزهار؟

سجّل في Exercism لتتعلّم وتتقن MIPS Assembly عبر 70 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.

تعمّق في حقل الأزهار!

نستكشف حلقات `for` المتداخلة، والاستخدام الذكي لـ `min`/`max` لتبسيط التحقق من الحدود، وخطوط الأنابيب الوظيفية، واستخدام المصفوفات ثنائية الأبعاد.