أنت تعمل في شركة تطوّر لعبة جماعية عبر الإنترنت تُدعى Lexiconia.
لخوض اللعبة، يُمنح كل لاعب 13 حرفًا، عليه أن يعيد ترتيبها لتكوين كلمات. ولكل حرف قيمة نقاط مختلفة، لأن تكوين الكلمات ببعض الأحرف أسهل من غيرها.
صدرت اللعبة في البداية باللغة الإنجليزية، لكنها لاقت شعبية كبيرة، والآن تريد الشركة التوسّع إلى لغات أخرى أيضًا.
تحتاج كل لغة إلى دعم قيم نقاط مختلفة للأحرف، وتُحدَّد قيم النقاط بحسب مدى شيوع استخدام الحرف مقارنة ببقية أحرف تلك اللغة.
على سبيل المثال، الحرف 'C' شائع جدًا في الإنجليزية، وقيمته 3 نقاط فقط. أما في النرويجية فهو حرف نادر جدًا، وقيمته 10 نقاط.
ولتسهيل إضافة لغات جديدة، يحتاج فريقك إلى تغيير طريقة تخزين الأحرف وقيم نقاطها في اللعبة.
مهمتك هي تغيير صيغة البيانات الخاصة بالحروف وقيمها النقطية في اللعبة.
حاليًا، تُخزَّن الحروف في مجموعات بناءً على نقاطها، وذلك في علاقة واحد إلى متعدد.
يجب تغيير هذا بحيث يُخزَّن كل حرف على حدة مع نقاطه في علاقة واحد إلى واحد.
وكجزء من هذا التغيير، قرر الفريق أيضًا تحويل الحروف إلى أحرف صغيرة بدلًا من الكبيرة.
إذا أردت أن ترى كيف كانت البيانات مهيكلة سابقًا وكيف يجب أن تتغير، فألقِ نظرة على الأمثلة في مجموعة الاختبارات.
تُختبر العناصر في مصفوفة الإخراج بترتيب تصاعدي للمفتاح.
لاحظ أن الـ structين يحملان عناصر بأحجام مختلفة، لذا فإن المحاذاة عامل يجب أخذه في الحسبان.
سجّل في Exercism لتتعلّم وتتقن x86-64 Assembly عبر 22 مفهومًا130 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.