أحد أشهر مواقع ال Online Judge ... ويحتوى على عدد كبير جدا من المسائل "Problems" ... وهو أكثر المواقع ارتباطا بال ACM حيث أن أغلب ال ACM Contests التى تقام وخاصة ال Worled Final ينصح منظموها بالتدريب على هذا ال Site, هذا بخلاف الكتب التى تشرح أنواع المسائل المختلفة مثل كتاب Programming Challenge, وهذا الكتاب يشرح ال Algorithm ويعطى كود مكتوب بال C ويترك لك بعض المسائل للتدريب, تلك المسائل موجودة على ال UVa.
فى البداية قم بالتسجيل فى الموقع ... فى خانة Online Judge ID أكتب 00000.
أولا لوحة التحكم الرئيسية :
- Quick Submit : اذا أردت ان ترسل حل لمسألة تعرف ال ID الخاص بها بدون ان تذهب الى المسألة.
- My Submission : بها جميع ال Submissions التى أرسلتها للموقع ونتائجها بالتاريخ والوقت.
- My statistics : لمعرفة عدد وأرقام المسائل التى قمت بحلها وتاريخ أخر Submission أرسلته وعدد ال Submission, نستطيع ان نقول ان هذا هو ال Profile.
- Browse Problems : من هنا تستطيع الدخول الى المسائل.
- Contests : اذا كانت هناك مسابقات Online تستطيع المشاركة بها.
- Site statistics : تستطيع منها معرفة نتيجة أخر 50 Submission و الترتيب العام لأعضاء الموقع و نتائج العام الماضى.
- أذا أردت البحث عن أى مسألة يمكنك البحث من هنا.
ثانيا البدء بالحل :
تحذير : أول مسألة فى ال Problem Set Volumes اسمها "The 3n + 1 problem - 100" لا تبدأ بحلّ هذه المسألة, أغلب من يبدأ بحلّ مسائل على هذا الموقع يبدأ بها لأنها أول مسألة, البعض يفترض أن أول مسألة أسهل مسألة, ولكن الحقيقة غير ذلك تماما, أنا شخصيا أحتجت الى 3 شهور كى أستطيع الحصول على Accepted فى هذه المسألة, وذلك ليس لصعوبتها البالغة, ولكنها تحتاج لبعض الخبرة ستكتسبها مع الوقت.
المسألة التى قمت بحلّها يكون بها لون أخضر مثل مسألة Longest Common Subsequence فى الصورة السابقة .
كلما كان ال (Total Submission \ Solving) أكبر كلما كانت المسألة أسهل وقابلة للحلّ أكثر وخصوصا اذا كان عدد الأعضاء الذين حاولوا حلّ هذه المسألة أكبر.
افتح أى مسألة وأقرأها جيدا وابدأ بالحل.
بعد ارسال الحل, لمعرفة النتيجة أضغط على My Submission لمعرفة نتيجة الحلّ, ويمكنك أيضا مشاهدة Last 50 Submission.
كلما كان ال (Total Submission \ Solving) أكبر كلما كانت المسألة أسهل وقابلة للحلّ أكثر وخصوصا اذا كان عدد الأعضاء الذين حاولوا حلّ هذه المسألة أكبر.
افتح أى مسألة وأقرأها جيدا وابدأ بالحل.
- Submit : اذا انتهيت من كتابة الكود وأردت أن ترسل الحلّ لتعرف النتيجة.
- Problem stats : اذا اردت أن تلقى نظرة على نتائج أفضل 20 حل لهذه المسألة.
- فى هذه الخانة يظهر الوقت الذى يجب الا يزيد عنه البرنامج الذى كتبته.
بعد ارسال الحل, لمعرفة النتيجة أضغط على My Submission لمعرفة نتيجة الحلّ, ويمكنك أيضا مشاهدة Last 50 Submission.
ثالثا بعض مميزات الموقع :
- لا يمكنك الدخول الى Profile أى شخص مسجل فى الموقع, ولا تستطيع معرفة المسائل التى قام بحلّها أصدقائك, ولكن كيف تكون هذه ميزة ؟؟؟ فى الواقع هى ليست ميزة ولكن يمكننا التغلب عليها.
كان الموقع فى البدابة يتيح هذه الخاصية, اذا ضغطت على اسم العضو كان يظهر لك Profile ذلك العضو, أما الان فاذا ضغطت على اسم أى عضو فستظهر لك تلك الرسالة .
فلنفترض اننا لدينا ال Site statistics - > Last 50 Submissions التالية
لو ضغطنا على العضو aka فسوف تظهر الرسالة السابقة .ولكى نتغلب على تلك الرسالة لاحظ معى الأتى, هذا هوaka Profile Link :
اذا قمنا بمسح الكلمة بالأحمر "_com" من ال Link وضغطنا Enter فأننا بذلك سنصل الى aka Profile Link
من الان وصاعدا اذا ظهرت لك تلك الرسالة فى ذلك الموقع قم بعمل نفس الخطوات.
- اذا واجهت صعوبة فى فهم أى مسألة أدخل على منتدى الموقع وستجد موضوع لكل مسألة, أقرأ مشاركات الأخرين قبل أن تسأل عن مشكلتك, مشاركات الاخرين قد تكون مفيدة,أدخل الى المنتدى من هنا.
- اذا أردت أن تجرب بعض ال Test Cases يمكنك استخدام UVa Toolkit, ابحث عن المسألة وضع Test Cases ثم تأكد من ال Output الصحيح, ومن هذا الموقع أيضا تستطيع معرفة بعض المعلومات عن نوع هذه المسألة او ال Algorithm المستخدم فى حلّها ان كان مشهورا.
نصيحة : أجعل ال UVa Toolkit أخر خياراتك وأنا لا أنصح به لأنه يعلم الكسل وأحيانا يحرمك من الاستفادة.
10783 - Odd Sum
11332 - Summing Digits
10071 - Back to High School Physics
10970 - Big Chocolate
11172 - Relational Operator
اذا واجهتك أى صعوبات تفضل واسأل.
هنا نسخة PDF للمقال.