تعرّف على لعبة "مفردات" النسخة العربية من اللعبة Wordle

تعرّف على لعبة "مفردات" النسخة العربية من اللعبة Wordle

في نهاية شهر يناير من هذا العام، بدأ فريق Kalvad في دبي تحدّي بعضهم البعض في لعبة Wordle التي صممها "جوش ووردل" عبر الإنترنت.

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

كيف تعمل لعبة "ووردل"

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

إذا انتابك الفضول، يمكنك رؤية المصدر بنفسك من المتصفح بزيارة الرابط التالي https://www.powerlanguage.co.uk/wordle/main.e65ce0a5.js

بعد النظر جيّداً في المصدر، لاحظنا أن هذه المجموعة من الكلمات لم يتم فرزها أبداً، وأن هذا التوزيع العشوائي هو الطريقة التي يختار بها Wordle الحل اليومي، يتم تحديد الحل من خلال فهرس بسيط في القائمة، إذا انتظرت لليوم التالي ستجد أن الحل هو عبارة عن فهرس الكلمة الماضية بزيادة مقدار 1 عن الفهرس، لذلك بمجرد النظر يمكنك إيجاد باقي الحلول في الأيام القادمة بكل سهولة، مما يفقد اللعبة متعتها.

تحديّات اللّغة العربية

بالنسبة إلى اللغة العربية، علمنا مسبقاً أننا سنواجه بعض التحديّات.

كان التحدي الأول هو الحجم الهائل للكلمات التي تحتويها هذه اللغة، كما أن اللغة العربية تُعرف بلغة المليون كلمة، هناك مركز للغة العربيّة في فلسطين يعرف باسم "سيبل" أو SEBIL Center يقارن عدد كلمات اللغة العربية باللغات الأخرى كالتالي:

  • اللغة العربية: 12.3 مليون كلمة
  • اللغة الإنجليزية: 600 ألف كلمة
  • اللغة الفرنسية: 150 ألف كلمة
  • اللغة الروسيّة: 130 ألف كلمة

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

https://sourceforge.net/projects/arabic-wordlist

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

كما يعلم الناطقين باللغة العربية، لدينا العديد من الكلمات المشتقة من الكلمة الأساسية، ومن الطبيعي أن تجد عدد الكلمات في اللغة العربية أكثر من اللغة الإنجليزية لأننا في اللغة العربية نستطيع اشتقاق العديد من الكلمات من كلمة بسيطة، على سبيل المثال كلمة "عربي" نجد أنها مرتبطة بعدّة كلمات تُحسب كمفردات في اللغة ولا يمكن تجاهلها، مثال:

كعربي، وعربي، لعربي، فعربي

كلها كلمات مشروعة وصحيحة، وإذا أردت البحث في المعجم عن أية كلمة من الكلمات السابقة فستبحث عن الأصل نفسه وهو " ع ر ب" وهو ما يميّز هذه اللغة الجميلة.

ولأن هذه الكلمات كلها صحيحة، احتفظنا بها في القائمة لأنها كلها تخمينات صحيحة وقابلة للاستخدام.

التحدّي الثاني كان حرف الألف "أ" وهو الحرف الأول في الأبجدية والذي يستخدم بعدّة أشكال ويكتب بهمزة فوق الألف أو همزة تحت الألف، وأيضاً الهمزة على نبرة وإلى آخره.

قمنا بدورنا بتجريد الهمزة عن الألف في القاموس فقط لمساعدة اللاعب في تخمين الكلمة دون النظر للهمزات، يمكنك كتابة "أبجدي" أو "ابجدي" ستكون النتيجة واحدة.

ولضمان تجربة مستخدم جيدة ، قمنا أيضًا بتعيين هذين الحرفين أثناء اللعب. على سبيل المثال :

أثناء اللعب
أثناء اللعب، يقوم المستخدم بإدخال حرف الألف مع الهمزة
بعد الضغط على زر أدخل تقوم اللعبة بالتصحيح التلقائي للحرف
تقوم اللعبة بالتصحيح التلقائي بعد الإدخال

التقنية المستخدمة

بما أننا من محبي "Angular" قمنا بتطوير اللعبة باستخدامها.

نجد أن اللعبة في العموم سريعة وخفيفة فهي عبارة عن كلمات ولا تتطلب معايير عالية من الأجهزة أو الحواسيب لمعالجتها وتحميلها للّعب.

Source code: GitHub

CI/CD: Clever-Cloud

Framework: Angular 13.2.0

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

استمتعوا بمفدرات!

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

https://mufradat.kalvad.com

قوموا بتجربة اللعبة ومشاركة نتائجكم في التعليقات.

⬛️⬛️⬛️⬛️⬛️
🟨⬛️🟩⬛️⬛️
🟩🟩🟩🟩⬛️
🟩🟩🟩🟩🟩