ما هى ال Online Judges ؟؟
مواقع تحتوى على مشاكل أو مسائل "Problems" تتطلب حلّها برمجيا ومن ثم تقدم الكود للموقع "Submit ", وبعد ذلك يحدد الموقع هل حلك صحيح أم خطأ.
ما هى أنواع المسائل التى تحتوى عليها ال Online Judges ؟؟
أشهر أنواع المسائل هى :
- Ad hoc : مسائل لا تحتاج الى معرفة Algorithm معين أو ان تكون على دراية عميقة بأحد العلوم .. وتعتمد فى الأساس على الذكاء وهى أشهر أنواع المسائل, وأحيانا كثيرة تكون الأسهل.
- simulation : خطوات ويجب عليك تنفيذها برمجيا .. تعتمد على قدرتك فى التعامل مع لغة البرمجة التى تستخدمها, وهى من أشهر أنواع المسائل أيضا.
- Math : ستتعلم منها أشياء جديدة أكثر من استخدامك لقواعد ال Math التى تعرفها.
- Number Theory : على رأى أحد ال ACMers "هتنظف دماغك".
- Sorting : ترتيب الأشياء بأقل وقت ممكن وأقل "Memory" ممكنة يجعل الحياة أسهل.
- Brute Force Method : أحيانا يكون استخدامها متاحا, عندما يكون لديك الوقت والمساحة (Memory) المناسبة.
- Backtracking : المطلوب ايجاد كل الحلول الممكنة وأختيار الحل الأفضل ... وأحيانا ايجاد أول حل صحيح.
- Dynamic Programing : تقسيم المشكلة الكبيرة الى مشاكل أصغر, ستتعلم منها ان المشاكل أحيانا تكون أبسط مما قد تبدو.
- Greedy : ستعلمك الطمع والجشع :D.
- Graph : صعوبتها فى ال implementation ودراسة ال Algorithms لحل مسائلها أسهل ... وحل مسألة منها يرفع الروح المعنوية جداا.
ما هى لغات البرمجة التى يمكن كتابة الكود بها ؟؟؟
- ++C وهى من أكثر اللغات استخداما.
- C
- Java
- Pascal
- Fortran
- GCC
- ANCII
أمثلة لل Online Judges
وان شاء الله فى تدوينات قادمة سيتم شرح كيفية التعامل مع كل موقع من المواقع السابقة و مميزات كل منهم وأيضا بعض النصايح لل ACMers الجدد (ACMers المستقبل).
ملحوظة : هنا نسخة PDF من المقال.