المصفوفة

المصفوفة

متوسط

التعليمات

إذا أُعطيت سلسلة نصية تمثّل مصفوفة من الأعداد، فأرجِع صفوف تلك المصفوفة وأعمدتها.

إذن، إذا أُعطيت سلسلة نصية مضمَّن فيها أسطر جديدة مثل:

9 8 7
5 3 2
6 6 7

وهي تمثّل هذه المصفوفة:

    1  2  3
  |---------
1 | 9  8  7
2 | 5  3  2
3 | 6  6  7

فينبغي أن يكون الكود الخاص بك قادرًا على إنتاج ما يلي:

  • مصفوفة من الصفوف، تُقرأ كل صف من اليسار إلى اليمين بينما ننتقل من أعلى إلى أسفل عبر الصفوف،
  • ومصفوفة من الأعمدة، تُقرأ كل عمود من أعلى إلى أسفل بينما ننتقل من اليسار إلى اليمين.

صفوف مصفوفتنا في المثال:

  • 9، 8، 7
  • 5، 3، 2
  • 6، 6، 7

وأعمدتها:

  • 9، 5، 6
  • 8، 3، 6
  • 7، 2، 7

تلميحات

لإكمال هذا التمرين، تحتاج إلى إنشاء نوع البيانات Matrix مع تعريف نسختَي Eq وShow، ثم تنفيذ الدوال التالية:

  • cols
  • column
  • flatten
  • fromList
  • fromString
  • reshape
  • row
  • rows
  • shape
  • transpose

ستجد إعلان بيانات وهميًا وتوقيعات الأنواع موضوعة بالفعل، لكن الأمر متروك لك لتعريف الدوال وإنشاء نوع بيانات ذي معنى، أو newtype، أو مرادف نوع.

لا يُشترط التحقق من صحة المُدخلات. دَعه يفشل إذا لم تكن المصفوفة مستطيلة، أو وُجدت محارف غير صالحة، وما إلى ذلك.

shape هي (rows, cols)

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

مستعد لبدء المصفوفة؟

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