الماسة

الماسة

صعب

التعليمات

يأخذ كاتا الماسة حرفًا كمُدخل، ويُخرجه على شكل ماسة. عند إعطائه حرفًا، يطبع ماسة تبدأ بالحرف 'A'، ويكون الحرف المُعطى عند أوسع نقطة فيها.

المتطلبات

  • يحتوي الصف الأول على حرف 'A' واحد.
  • يحتوي الصف الأخير على حرف 'A' واحد.
  • تحتوي جميع الصفوف، ما عدا الأول والأخير، على حرفين متطابقين تمامًا.
  • تحتوي جميع الصفوف على عدد من المسافات في نهايتها مساوٍ لعدد المسافات في بدايتها. (قد يكون هذا العدد صفرًا).
  • الماسة متناظرة أفقيًا.
  • الماسة متناظرة رأسيًا.
  • الماسة مربعة الشكل (العرض يساوي الارتفاع).
  • تُشكّل الحروف شكل ماسة.
  • يحتوي النصف العلوي على الحروف بترتيب تصاعدي.
  • يحتوي النصف السفلي على الحروف بترتيب تنازلي.
  • الزوايا الأربع (التي تحتوي على المسافات) هي مثلثات.

الأمثلة

في الأمثلة التالية، تُشار إلى المسافات بالمحرف ·.

الماسة الخاصة بالحرف 'A':

A

الماسة الخاصة بالحرف 'C':

··A··
·B·B·
C···C
·B·B·
··A··

الماسة الخاصة بالحرف 'E':

····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····

تلميحات

تختلف الاختبارات في هذا التمرين عن الاختبارات التي اعتدتها. فعادةً يتحقق الاختبار مما إذا كان الناتج يطابق القيمة المتوقعة لمدخل معيّن، ويُسمّى هذا الاختبار القائم على القيم. غير أنّ هذا التمرين يستخدم الاختبار القائم على الخصائص، حيث تتحقق الاختبارات مما إذا كان للناتج خاصية محددة عبر مجموعة من المدخلات. والفرقان الجوهريان اللذان يميّزان الاختبار القائم على الخصائص عن الاختبار القائم على القيم هما:

  1. لا يعمل الاختبار القائم على الخصائص بقيمة إدخال واحدة، بل بقيم كثيرة.
  2. يتحقق الاختبار القائم على الخصائص من الخصائص، لا من قيم محددة.

في هذا التمرين، تتحقق جميع الاختبارات من خاصية في شكل المعيّن الذي ينبغي أن ينتجه كودك. علاوة على ذلك، تتحقق جميع الاختبارات مما إذا كانت الخاصية التي تختبرها تنطبق على جميع حروف الإدخال الصالحة ('A' إلى 'Z').

ولتسهيل الاختبار القائم على الخصائص، تستعين اختبارات هذا التمرين بحزمتَي FsCheck وFsCheck.Xunit. ولمعرفة المزيد عن FsCheck، يمكنك الاطلاع على وثائق الإطار هنا.

وإذا أردت المزيد من المعلومات عن الاختبار القائم على الخصائص، فراجع هذا المقال.


المصدر

Seb Roseيفتح الرابط في نافذة أو علامة تبويب جديدة
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
C# Exercism

مستعد لبدء الماسة؟

سجّل في Exercism لتتعلّم وتتقن C# عبر 62 مفهومًا178 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.