قيمة حقيبة الظهر صفر-واحد
عظّم قيمة ما يصل إلى 64 زوجًا من الوزن والقيمة بسعة صحيحة من صفر إلى 1000 مع استخدام كل عنصر مرة واحدة.
def knapsack_value(items, capacity):
items = tuple(tuple(item) for item in items)
if type(capacity) is not int or not 0 <= capacity <= 1000:
raise ValueError("capacity.range")
if len(items) > 64 or any(len(item) != 2 for item in items):
raise ValueError("items.shape")
if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
raise ValueError("item.range")
best = [0] * (capacity + 1)
for weight, value in items:
for limit in range(capacity, weight - 1, -1):
best[limit] = max(best[limit], best[limit - weight] + value)
return best[capacity]راجع قبل التطبيق
قارن السلوك الفعلي بالنتيجة المتوقعة. إذا فشل فحص، تحقّق من السبب قبل إجراء تغييرات إضافية.
النماذج
اضبط نقطة اتصال متوافقة مع OpenAI أو Anthropic باستخدام العنوان الأساسي ومفتاح API عند الحاجة. اختبر الاتصال. يجب أن يعمل خادم النموذج المحلي؛ وقد ترسل الأدوات البعيدة البيانات بشكل منفصل.
المشروع
اختبر السعة الصفرية والعنصر الأثقل من السعة وارفض الأوزان الصفرية أو المعاملات غير الصحيحة قبل إنشاء الجدول.
def knapsack_value(items, capacity):
items = tuple(tuple(item) for item in items)
if type(capacity) is not int or not 0 <= capacity <= 1000:
raise ValueError("capacity.range")
if len(items) > 64 or any(len(item) != 2 for item in items):
raise ValueError("items.shape")
if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
raise ValueError("item.range")
best = [0] * (capacity + 1)
for weight, value in items:
for limit in range(capacity, weight - 1, -1):
best[limit] = max(best[limit], best[limit - weight] + value)
return best[capacity]افصل قاعدة الاختيار عن الكود الذي ينفذها
يدعم PackSerein العمل البرمجي بمساعدة الذكاء الاصطناعي في مساحة مشروع على Windows، حيث تناقش متطلبات التحسين بجانب ملفات التنفيذ. صف ما يمكن اختياره والقيود الإلزامية والنتيجة التي يحتاجها المستدعي فعليا. اطلب من المساعد فحص التمثيل الحالي قبل تغيير أداة الحل. يمنع الهدف الواضح تنفيذا معقولا ظاهريا من حل مسألة مختلفة قليلا.
يقترح مثال knapsack.py مهمة مراجعة يسمح فيها باختيار كل عنصر مرة واحدة على الأكثر ضمن حد للسعة. يمكنك السؤال عما إذا كان تحديث مقترح يحافظ على هذه القاعدة، وعما إذا كان التطبيق يحتاج القيمة فقط أم العناصر المختارة أيضا. حل حالة صغيرة يدويا ثم افحص الكود على أساسها. أبق حدود المدخلات والقيم المرفوضة ضمن المراجعة نفسها.
حين يصبح التعديل جاهزا، شغل اختبارات المشروع لاختيار خال وحد للسعة وتركيبات متنافسة. افحص عقد المخرجات قبل تكييف الكود المستخدم لها. يقبل PackSerein نقاط نهاية مدعومة متوافقة مع OpenAI أو تابعة لـ Anthropic وبيانات الاعتماد عند الحاجة. يمكن اختيار نموذج غير مفلتر إذا أتاحه اتصالك؛ وتظل قيوده وحدود سياقه ودعم أدواته معتمدة على النموذج والخادم. تساعد مساحة العمل في تنظيم القرار البرمجي، بينما تحدد فحوصك استيفاءه للهدف.
أسئلة تحدد مهمة تحسين
- لماذا أحدد ما إذا كان يمكن اختيار العنصر مرتين؟
السماح بتكرار الاختيار يغير المسألة وقد يغير النتيجة. ضع القيد في الطلب واختبر حالة صغيرة يعطي فيها التكرار جوابا مختلفا، ثم افحص محافظة التحديث عليه.
- هل تكفي قيمة مثلى للتطبيق؟
يعتمد ذلك على المستدعي. يحتاج بعض المستخدمين القيمة فقط، وآخرون العناصر المختارة أيضا. حدد المخرج المطلوب قبل طلب التغييرات كي لا يفترض المساعد أن رقما واحدا يكمل الميزة.
- كيف أتعامل مع حلول متساوية القيمة؟
حدد ما إذا كان أي حل أمثل صالح مقبولا أم يحتاج التطبيق قاعدة حتمية لكسر التعادل. إذا أعيدت العناصر المختارة، فاختبر التعادلات صراحة وراجع القاعدة بدلا من الاعتماد على ترتيب تكرار عرضي.
- هل يمكن للمثال إثبات أداء أداة الحل على نطاق كبير؟
لا. استخدمه لمناقشة تنفيذ محدود، ثم قيم المشروع الفعلي بأحجامه المطلوبة. لا تثبت حالة صغيرة صحيحة وشرح بالذكاء الاصطناعي سلوك زمن التشغيل أو الذاكرة على نطاق مختلف.
PackSerein · آخر تحديث 2026-10-25