180 قراءة٪ s تاريخ جديد

اختبار ماجستير القانون في حل مشاكل Leetcode في عام 2025

بواسطة Alex Svetkin9m2025/04/08
Read on Terminal Reader

طويل جدا؛ ليقرأ

يمكن للكليات "المعقولة" من الممكن حل كمية كبيرة من مشكلات Leetcode الصعبة.
featured image - اختبار ماجستير القانون في حل مشاكل Leetcode في عام 2025
Alex Svetkin HackerNoon profile picture
0-item
1-item

بعد عام من ذلك، أظهرت مقارنة أن نموذج اللغة الكبيرة (LLMs) يمكن حل التحديات الكمبيوترية في Leetcode. ومع ذلك، كان قدرةهم محدودة إلى مجموعة متنوعة من المشاكل المعروفة "الشهيرة". المشكلات الجديدة، التي لم تكن جزءاً من مجموعات بيانات التدريب الخاصة بهم، عرضت مشاكل. على الرغم من أن الأسهل تم حلها في معظم الأحيان من قبل النماذج، إلا أن الأسهل لم يتم حلها.

مقالاتيمقالاتي

منذ ذلك الحين، أطلقت Open AI، Anthropic، و Google إصدارات تحسن من نموذجها وتظهر لاعبين جدد مثل Deepseek و xAI.

المبادئ

هناك معيارين متوازيين موجودين لـ LLMs لتقييم قدراتهم في التدوين.

SWE-bench يهدف إلى حل مشاكل البرمجيات الحقيقية - ويعتمد على مشاكل Github من مشاريع المصدر المفتوح الحالي.SWE-benchأبوظبي

Codeforces المؤشرات الأساسية تعكس مهارات حل المشكلات الفلسفية من LLMs أفضل. OpenAI اختبار نموذج o1 و o3 على مشكلات Codeforces وتشارك النتائج التفصيلية (1, 2) ، في حين أن المنافسين الآخرين لم يكنوا.تطبيقالطرق1122

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

التصميم المقارن

إن الفكرة هي التعبير عن الأفعال البشرية عند حل المشكلات الفلكية ولكن استخدام LLM لإدخال الكود:

  1. تحميل وصف المشكلة.
  2. Create a prompt from the description.
  3. Generate code with the LLM.
  4. Submit the code for validation.
  5. Await results.
  • تحميل وصف المشكلة.
  • Create a prompt from the description.
  • إنشاء إشارة من وصف.
  • إنتاج الكود مع LLM.
  • رسالة الكود للتحقق.
  • انتظار النتائج.

  • الخطوات المطروحة لتقييم

    الخطوات المطروحة من المؤشر


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


    Why Leetcode؟

    أثبتت Leetcode أنه خيار جيد لتقييم المقارنة لعدة أسباب:

    • تستخدم مشاكل Leetcode في المقابلات الحقيقية للموظفين في مهام مهندس البرمجيات.
    • الطلاب في علوم الكمبيوتر يتعلمون كيفية حل مشاكل مماثلة خلال دراستهم.
    • هناك قاضي على الانترنت الذي يمكن أن يحدد ما إذا كان الحل صحيح في ثوان.
    • تعزيز العديد من اللغات البرمجية المعروفة.
    • تعزيز أداء المستخدم البشري على هذه المشكلة أيضا متاح.
  • تستخدم مشاكل Leetcode في المقابلات الحقيقية لمواقع مهندس البرمجيات.
  • طلاب علوم الكمبيوتر يتعلمون حل مشاكل مماثلة خلال دراستهم.
  • هناك محاكمة على الانترنت التي يمكنها التحقق من أن الحل صحيح في بضع ثوان.
  • تعزيز العديد من لغات البرمجة المعروفة.
  • أداء المستخدم البشري على هذه المشكلة أيضا متوفر.

  • كيف يعمل Leetcode

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

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

    لابد من كتابة جزء من الكود الذي يلغي هذا المشكلة، ولابد من البدء في "القطع" - وظيفة غير متوفية، مع اسم وأغراض معينة، ولكن جسم غامض:

    class Solution:    def twoSum(self, nums: List[int], target: int) -> List[int]:      # الكود هنا  
    class Solution:    def twoSum(self, nums: List[int], target: int) -> List[int]:      # رمزك هنا 

    في العادة ، يتم تقديم العديد من العينات من الدخول والخروج (محاضرات الاختبار) في وصف:

    تدفق:  عدد = [2,7,11,15], الهدف = 9 تدفق: [0,1]   
    Input:  nums = [2,7,11,15], target = 9  Output: [0,1]   قد يكون لديك مشكلة عشرات الحالات الاختبارية المتاحة فقط للمرشح عبر الإنترنت. يتم حل المشكلة (أو يعتبر الحل واجبًا) إذا و فقط إذا أدى الكود إلى إنتاج النتائج المتوقعة لجميع الحالات الاختبارية في حدود معقولة من الزمن والذكاء.

    كل مشكلة لها "معدل قبول" ، وهو نسبة الحلول المقبولة التي يتم تقديمها من قبل مستخدمي Leetcode.

    لقد تم اختراع هذه القواعد من قبل Leetcode، وقد تم استخدامها عموما في مباريات علم الحاسوب لفترة طويلة.


    مجموعة البيانات

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

    • المشاكل "المعروفة" لا تظهر إلا منذ فترة طويلة ولكن أيضا تستخدم في كثير من الأحيان لمناقشة البرمجيات - وبالتالي ، فإن الحلول متوفرة على نطاق واسع.
    • المشاكل "المعروفة" التي تم نشرها مؤخرًا ، ولم يكن من المرجح أن تلاحظ حلولها من قبل LLMs المختبرة.
  • المشاكل "المعروفة" ليست فقط تم نشرها منذ فترة طويلة ولكنها أيضا تستخدم في كثير من الأحيان لمناقشة البرمجيات - وبالتالي، فإن الحلول متاحة على نطاق واسع.
  • المشاكل "لا ترى" التي تم نشرها مؤخرًا، وخلقها لم يكن من المرجح أن يتم الاحتفاظ بها من قبل LLMs المختبرة.
  • على الرغم من أن معظم المشكلات لديها توصيات نصيحة وتتطلب فقط توسيع وظيفة معينة باستخدام الكود ، إلا أن بعضها مختلف.بعضها يتطلب تنفيذ رابط ، أي توسيع العديد من الوظائف في مشكلة واحدة.

    Leetcode يوفر ثلاث قائمة المشاكل: "Leetcode 75"، و "تصنيفات 150 أفضل"، "تصنيفات 75 جيدة"، و "تصنيفات 100 جيدة"."المؤتمر السادس""Leetcode 75""Top 100 Likes"

    لقد اخترت 99 من أكثر المشاكل التي تم نشرها في الآونة الأخيرة: 33 سهلة، 33 متوسطة، و 33 صعبة.تحدد السبب الأخير بناءً على هوية المشاكل، والتي هي متزايدة.بعد أن Leetcode لا يظهر تاريخ نشر المشاكل، يمكن أن يتم تقسيمها من التعليقات والمناقشات.أول هذه المشاكل "المشاكل التي تم نشرها في الآونة الأخيرة قد تم نشرها في منتصف نوفمبر 2024.

    مستوى الصعوبة هو شخصيًا تمامًا، وبإرادة المدونين.

    لقد لم أتمكن من تقييم عدد المشكلات لكل صعوبة أو مجموعة من البيانات.








    مجموعة المشكلة

    مجموعة المشكلات

    مجموعة المشكلات



    غير معروف





    الطبيعة

    الشخصية

    المعروفة

    لا أعرف
    (23 مارس 2019)

    لا أعرف
    (23 مارس 2019)

    لا أعرف
    (23 مارس 2019)

    مجموع

    133

    99

    مجموع

    مجموع

    مجموع

    133

    133

    99

    99

    كيفية

    41

    33

    الطريقة

    الطريقة

    أسهل

    41

    41

    33

    33

    مستوى

    78

    33

    معدل

    معدل

    معدل

    78

    78

    33

    33

    كبير

    14

    33

    الصعب

    الصعب

    الصعب

    14

    14

    33

    33

    معدل قبول المستخدمين Leetcode

    53.44%

    37.05%

    معدل قبول المستخدمين Leetcode

    معدل قبول المستخدمين Leetcode

    معدل قبول المستخدمين Leetcode

    53.44%

    53.44%

    53.44%

    37,05%

    37,05%

    37,05%

    لقد تم الحصول على بيانات المشكلات والتسريبات من الكود باستخدام أداة المقارنة التي تم نشرها على Github: https://github.com/whisk/leetgptsolver

    https://github.com/whisk/leetgptsolverhttps://github.com/whisk/leetgptsolver


    على سبيل المثال، خيار اللغة و إنتاج الكود

    لقد تم تصميم معيار المقارنة بهذه الطريقة: LLM يحاول فقط إنتاج الكود دون أي معلومات مسبقة عن المشكلة (أو أي مشكلات أخرى) وبدون معرفة حالات اختبارها، باستثناء تلك التي كانت في وصف نفسها.

    أنا استخدم نفس الإشارة لكل LLM و كل مشكلة:

    السلام عليكم، هذه هي مقابلة التدوين. ستحصل علي: * بيان مشكلة (بما في ذلك حالات اختبار النماذج إذا كان متاحاً). * رسالة رقمية (بما في ذلك رسائل وظائف ثابتة). يرجى كتابة حلولك في لغة البرمجة {language}. يجب عليك: * حل المشكلة بالكامل والواقع. * إرسال جميع حالات اختبار النماذج المتوفرة: {snippet} متطلبات مهمة: * لا تغيّر أي رسائل وظيفة أو أسماء أو أسماء الطريقة المتوفرة إذا لم تكن مخصصة. * اتبع الممارسات الجيدة في التدوين (لغة واضحة، هيكل قابل للتعرف، الاستخدام المناسب من خصائص اللغات). هنا بيان المشكلة: {السلام عليكم، هذه هي مقابلة التدوين. ستحصل على: * بيان مشكلة (بما في ذلك حالات اختبار النماذج إذا كان متاحاً). * رسالة رقمية (بما في ذلك رسائل وظائف ثابتة). يرجى كتابة حلولك في لغة البرمجة {language}. يجب أن يكون رمزك: * حل المشكلة بالكامل والواقع. * إرسال جميع حالات اختبار النماذج المتوفرة: {snippet} متطلبات مهمة: * لا تغيّر أي رسائل مخصصة أو أسماء الطبقة أو أسماء الطريقة. * اتبع الممارسات الجيدة في التدوين (الطبيعة البسيطة، والتكوين المقرّب، الاستخدام المناسب من ميزات اللغات). هنا بيان المشكلة: {question} هنا

    تصنيف الدعوة "تصنيف" مع ChatGPT4 من المشروع الأول ، ولكن دون تنفيذ أي تقنيات "التصنيف".

    لقد تم إزالة وصف المشكلة من علامات HTML قبل استخدامها في الملف.

    لغة البرمجة التي اخترت Python (إصدار 3).

    تم طلب LLM من إرسال الكود فقط دون أي نص مسبق، ولكن هذا لم يكن صحيحًا في العديد من الحالات.


    النماذج والخصائص

    تصدر النماذج المستخدمة في النماذج في جدول أدناه، مع جميع الميزات غير المحددة المحددة.



    الشركة

    الشركة

    الشركة

    التصميم

    الطريقة

    التصميم

    مجلة معلومات

    على سبيل المثال

    على سبيل المثال تاريخ تقسيم المعرفة

    "الخيرية"

    "الخيرية"

    "العدالة"

    الطرق

    الخطوط الجوية

    القواعد

    أمراض القلب

    مادة 3-7-sonnet-20250219

    نوفمبر 2024

    لا

    درجة الحرارة = 0.0 max_tokens = 4096

    أمراض القلب

    أمراض القلب

    مصطلح 3-7-sonnet-20250219

    صورة 3-7-sonnet-20250219

    على 3-7-sonnet-20250219

    أكتوبر 2024

    أكتوبر 2024

    لا

    لا

    الطول = 0.0 max_tokens = 4096

    الطاقة = 0.0 max_tokens = 4096


    مقالات 3-7-sonnet-20250219 (بإمكان التفكير)

    Nov 2024

    Yes

    temperature = 0.0 max_tokens = 16384 budget_tokens = 8192



    تصنيف-3-7-sonnet-20250219 (بإمكان التفكير)

    صورة 3-7-sonnet-20250219 (بإمكانية التفكير)

    على 3-7-sonnet-20250219 (عندما تتمكن من التفكير)

    أكتوبر 2024

    أكتوبر 2024

    نعم

    نعم

    الطول = 0.0 max_tokens = 16384 budget_tokens = 8192

    الطول = 0.0 max_tokens = 16384 budget_tokens = 8192

    DeepSeek

    deepseek-chat (DeepSeek-V3)

    unknown

    No

    temperature = 0.0

    متابعة


    الطباعة

    تقارير(DeepSeek-V3)

    مشاهدات مشاهدات

    تعليق فوركس(DeepSeek-V3)

    لا أعرف

    لا أعرف

    لا

    لا

    الطول = 0.0

    الطاقة = 0.0





    تقنيات التعلم العميق (DeepSeek-R1)

    على سبيل المثال (DeepSeek-R1)

    المعرفة العميقة (DeepSeek-R1)

    لا أعرف

    لا أعرف

    نعم

    نعم

    الطول = 0.0

    الطاقة = 0.0

    Google

    p>p>

    unknown

    No

    temperature = 0.0

    جوجل

    جوجل

    تقنية الفيديو 2.0-flash-001

    تقنيات الفيديو 2.0-flash-001

    GEMINI-2.0-Flash-001

    لا أعرف

    لا أعرف

    لا

    لا

    الطول = 0.0

    temperature = 0.0


    p>

    unknown

    No

    temperature = 0.0



    تقنيات الهواتف الذكية 2.0-pro-exp-02-05

    تقنيات الهواتف الذكية 2.0-pro-exp-02-05

    تقنية الهواتف الذكية 2.0-pro-exp-02-05

    لا أعرف

    لا أعرف

    لا

    لا

    الطول = 0.0

    الطاقة = 0.0


    p>

    unknown

    Yes

    temperature = 0.0



    ترامب-2.5-pro-exp-03-25

    تقنيات-2.5-pro-exp-03-25

    GEMINI-2.5-pro-exp-03-25

    لا أعرف

    لا أعرف

    نعم

    نعم

    الطول = 0.0

    الطاقة = 0.0

    xAI

    grok-2-1212

    17 يوليو 2024

    لا

    p>الصورة = 42

    xAI

    مصطلح

    جوجل-212

    جوجل-212

    Grok-2-1212

    17 يوليو 2024

    حزيران/يونيو 2017

    لا

    لا

    الشعر = 42

    الشعر = 42

    OpenAI

    o1-2024-12-17

    Oct 01, 2023

    Yes

    p>n=42

    الخيارات الثنائية

    الطباعة

    o1-2024-12-17

    o1-2024-12-17

    o1-2024-12-17

    أكتوبر 01, 2023

    أكتوبر 01, 2017

    نعم

    نعم

    الشعر = 42

    الشعر = 42


    o3-mini-2025-01-31

    أكتوبر 01, 2023

    Yes

    seed = 42



    o3-mini-2025-01-31

    o3-mini-2025-01-31

    o3-mini-2025-01-31

    أكتوبر 01, 2023

    أكتوبر 01, 2017

    Yes

    نعم

    الشعر = 42

    seed = 42

    تطلع النتائج إلى أن تكون أكثر تعقيدا وتثبيتا، وبالتالي، استخدمت المواد مثل "الطول" أو "الشعير".

    كل موعد إزالة المعرفة المعروفة أصغر من أقدم مشكلة في مجموعة البيانات المعروفة (نوفمبر 2024).

    يستطيع بعض النماذج دعم الوضع "الكذب" أو "الكذب" حسب المعيار، في حين أنه بالنسبة إلى Claude 3.7 Sonnet يمكن إدخالها عن طريق إرسال المعايير.استخدام هذه الميزة يتم تحديدها في جدول.لا تم إدخال ميزات النماذج الأخرى (أو "أدوات") مثل البحث على شبكة الإنترنت، حتى لو تم دعمها.

    النتائج

    النتائج على "مشكلة معروفة"

    النتائج على "مشكلة معروفة"><p></p><p>لقد أظهرت جميع المنافسين أسعار قبول عالية للغاية على المشاكل المعروفة، كما في النتائج السابقة. لم أختبر النماذج العالية أو التعديلات (على سبيل المثال: Claude 3.7 Sonnet مع إمكانية التفكير، DeepSeek R1, Gemini 2.5 Pro، O1) لتخزين الوقت والقدرة، حيث كانت النتائج متوقعة للغاية.</p><p><img src=

    النتائج على "مشكلة غير مرئية

    النتائج مختلفة جدًا بالنسبة لمشكلات "لا ترى" في اثنين من جوانبها:

    1. لدى جميع النماذج كانت نسبة قبولها أقل بالنسبة للمشاكل "لا ترى".هذه هي المرة الأكثر شيوعاً بالنسبة للمشاكل المتوسطة والأكبر صعوبة.
    2. لدى النماذج التي تمكنت من وضع "تفكير" أو "تفكير" انتجت نتائج أفضل في جميع المشاكل من جميع الصعوبات، على الرغم من أن الأرقام الحقيقية تختلف من النماذج إلى النماذج.
  • بالإضافة إلى جميع النماذج ، فإن معدل قبولها أقل بالنسبة للمشاكل "لا ترى".معدل قبول أقل بالنسبة لمشاكل "لا ترى"
  • تتمكن النماذج مع وضع "تفكير" أو "تفكير" من إنتاج نتائج أفضل في جميع المشاكل من جميع الصعوبات، على الرغم من أن الأرقام الحقيقية تتلاشى من النماذج إلى النماذج.
  • معدلات مع وضع "تفكير" أو "تفكير" تمكنت من إنتاج نتائج أفضل

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

    جميع النماذج التي تمكنت من وضع "معالجة" تمكنت بشكل كبير من تحقيق أرباحها الأساسية. على سبيل المثال، تمكن بعضها من حل جزءاً كبيراً من المشاكل المتوسطة والأكبر - إنجاز غير ممكن منذ عام واحد فقط. يظهر O3-mini أفضل النتائج بين جميع النماذج "معالجة" - تمكنت من تحقيق أفضل من النماذج الأكثر تكلفة وأقل تعقيدا. O3-mini تم تدريبها بشكل خاص لتسوية مشاكل البرمجة المنافسة.أهم من ذلك، كان بعضهم قادرين على حل جزء كبير من المشاكل المتوسطة والصعبةلقد تم التدريب بشكل خاصلقد تم التدريب بشكل خاص

    المفاهيم المستقبلية

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

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

    هذه الأفكار تحتاج إلى بحث إضافي، وأنا أعتقد أن شخصاً آخر أو أنا يمكن أن يغطيها.

    الصفحات

    https://github.com/whisk-on-solving-leetcode-problems">https://github.com/whisk-on-leetgptsolver https://hackernoon.com/testing-llms-on-solving-leetcode-problems
  • النتائج الجذابة، وتحديد المشكلات، ويمكن العثور على رمز المصدر على GitHub:  https://github.com/whisk/leetgptsolver
  • https://github.com/whisk/leetgptsolverhttps://github.com/whisk/leetgptsolver
  • تصنيفات مؤشري السابقين (2024): https://hackernoon.com/testing-llms-on-solving-leetcode-problems
  • https://hackernoon.com/testing-llms-on-solving-leetcode-problemshttps://hackernoon.com/testing-llms-on-solving-leetcode-problems


    تغطية الصورة التي تم إنشاؤها من قبل DALL·E.

    Trending Topics

    blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks