Benchmark · coding
LiveCodeBench
يقيّم LiveCodeBench مدى قدرة نماذج اللغة الكبيرة على حل مسائل competitive programming، باستخدام تحديات برمجية تُجمع باستمرار من المسابقات الحديثة لتجنّب تلوّث بيانات التدريب. المقياس الرئيسي هو pass@1، أي نسبة المسائل التي يحلّها النموذج بشكل صحيح من المحاولة الأولى.
اقرأ المزيد
- مثال
- المثال النموذجي هو مسألة برمجية بأسلوب المسابقات — على سبيل المثال، بمعطى مصفوفة من الأعداد الصحيحة، كتابة دالة تُعيد طول أطول متتالية جزئية متزايدة تمامًا — يجب على النموذج حلّها عبر توليد كود يعمل فعليًا.
- طريقة التقييم
- يُشغَّل كل حل مُولَّد على حالات اختبار المسألة؛ وpass@1 هو نسبة المسائل التي يجتاز فيها أول إرسال للنموذج جميع الاختبارات.
- التحقق
- يُقبل الحل تلقائيًا عندما يجتاز الكود المُولَّد جميع حالات الاختبار المخفية والعلنية لتلك المسألة؛ دون أي تقييم بشري أو مطابقة نصية دقيقة.
- لماذا يهم
- بما أنّ مسائله مأخوذة من مسابقات صدرت بعد تاريخ انتهاء تدريب النموذج، فإنّ LiveCodeBench يقيس قدرة حقيقية على الاستدلال والبرمجة بدلاً من إجابات محفوظة، ما يجعله مؤشرًا موثوقًا ومقاوِمًا للتلوّث لمهارة البرمجة.
مثال محلول
المهمة
بأسلوب البرمجة التنافسية (stdin/stdout). بمعطى n عددًا صحيحًا، احسب عدد الأزواج (i, j) حيث i < j بحيث يكون nums[i] + nums[j] زوجيًا. المدخلات: السطر الأول n، والسطر الثاني n أعدادًا صحيحة مفصولة بمسافات؛ اطبع العدد.
الحل
import sys
def main():
data = sys.stdin.read().split()
n = int(data[0])
nums = list(map(int, data[1:1 + n]))
odd = sum(x % 2 for x in nums)
even = n - odd
print(odd * (odd - 1) // 2 + even * (even - 1) // 2)
main()
الشرح
يكون المجموع زوجيًا فقط عندما يكون للحدّين التكافؤ نفسه، لذا فالجواب هو C(evens, 2) + C(odds, 2)؛ وحساب التكافؤ يجري بزمن O(n). يشغّل LiveCodeBench برنامج النموذج على اختبارات وحدة مخفية ويقيّمه بمقياس pass@1 — صحيح فقط إذا نجحت كل الاختبارات.