القسمة على كثير حدود أحادي المعامل
اقسم كثيرات حدود صحيحة ذات 21 معاملا كحد أقصى على قاسم معامله الرئيسي واحد.
def divide_monic(dividend, divisor):
for row in (dividend, divisor):
if type(row) not in (list, tuple) or len(row) > 21:
raise ValueError("at most 21 coefficients")
if any(type(x) is not int for x in row): raise ValueError("integers")
def trim(row):
row = list(row)
while row and row[0] == 0: row.pop(0)
return row
a, b = trim(dividend), trim(divisor)
if not b or b[0] != 1: raise ValueError("monic divisor")
quotient = [0] * max(0, len(a) - len(b) + 1)
while a and len(a) >= len(b):
degree, factor = len(a) - len(b), a[0]
quotient[len(quotient)-1-degree] = factor
a = trim([x-factor*y for x,y in zip(a,b)] + a[len(b):])
return trim(quotient), aراجع قبل التطبيق
قارن السلوك الفعلي بالنتيجة المتوقعة. إذا فشل فحص، تحقّق من السبب قبل إجراء تغييرات إضافية.
النماذج
اضبط نقطة اتصال متوافقة مع OpenAI أو Anthropic باستخدام العنوان الأساسي ومفتاح API عند الحاجة. اختبر الاتصال. يجب أن يعمل خادم النموذج المحلي؛ وقد ترسل الأدوات البعيدة البيانات بشكل منفصل.
المشروع
اختبر كثير الحدود الصفري والقاسم الثابت وارفض المعاملات غير الصحيحة أو القاسم غير الأحادي وتحقق من هوية خارج القسمة والباقي.
def divide_monic(dividend, divisor):
for row in (dividend, divisor):
if type(row) not in (list, tuple) or len(row) > 21:
raise ValueError("at most 21 coefficients")
if any(type(x) is not int for x in row): raise ValueError("integers")
def trim(row):
row = list(row)
while row and row[0] == 0: row.pop(0)
return row
a, b = trim(dividend), trim(divisor)
if not b or b[0] != 1: raise ValueError("monic divisor")
quotient = [0] * max(0, len(a) - len(b) + 1)
while a and len(a) >= len(b):
degree, factor = len(a) - len(b), a[0]
quotient[len(quotient)-1-degree] = factor
a = trim([x-factor*y for x,y in zip(a,b)] + a[len(b):])
return trim(quotient), aأبق الافتراضات الرياضية واضحة عند تعديل الكود
MonicVale مساحة عمل للبرمجة على Windows لمناقشة الدوال الرياضية المساعدة في سياق التطبيق الذي يستخدمها. ابدأ بمجلد المشروع وحدد الافتراضات التي تعتمد عليها الدالة. اطلب من المساعد فحص تلك الافتراضات في الكود قبل طلب إعادة هيكلته. يوضح الاقتراح المفيد السلوك الذي يبقى كما هو والمدخلات التي تظل خارج العقد المدعوم.
قد تتناول مهمة حول polynomial.py القسمة التي يشترط فيها أن يكون المقسوم عليه أحادي المعامل الرئيسي. قدم أمثلة على ترتيب المعاملات والأصفار البادئة وخارج القسمة والباقي المتوقعين. اسأل كيف يمثل التنفيذ الحالي هذه النتائج، ثم راجع أي تبسيط مقترح على أساس هذا التمثيل. بذلك تبقى المناقشة مرتبطة بسلوك البرنامج، ولا يحل شرح رياضي عام محل مراجعة التنفيذ.
بعد التعديل، شغل فحوص المشروع وقارن المخرجات بأمثلة حُلّت بصورة مستقلة. افحص سلوك الرفض أيضا، خصوصا حين قد يمرر المستدعي مقسوما عليه لا تدعمه الدالة. يتصل MonicVale بنقاط نهاية مدعومة متوافقة مع OpenAI أو تابعة لـ Anthropic، مع بيانات الاعتماد حسب الحاجة. لا تتاح النماذج بلا قيود إلا إذا وفرتها نقطة النهاية المختارة؛ وتظل القيود وسعة السياق والأدوات معتمدة على تلك الخدمة. استخدم مساحة العمل لجمع الافتراضات والنتائج المرصودة أثناء تقرير جاهزية التعديل.
الافتراضات وراء دالة رياضية مساعدة
لماذا أحدد ترتيب المعاملات قبل طلب التعديل؟
قد تمثل القائمة نفسها كثيرات حدود مختلفة باختلاف الاصطلاحات. وضح ترتيب المعاملات وتمثيل الصفر في مشروعك، ثم تحقق من المستدعين والقيم المعادة وفق ذلك الاصطلاح قبل قبول إعادة هيكلة يقترحها النموذج.
هل ينبغي للدالة تكييف المقسومات عليها غير المدعومة بصمت؟
فقط إذا غيرت عقدها عمدا وفحصت العواقب. ينبغي أن تبلغ الدالة المقصورة على المقسومات عليها أحادية المعامل الرئيسي عن المدخلات غير المدعومة باتساق؛ وقد يتطلب تعميمها افتراضات حسابية مختلفة واختبارات إضافية في الكود المستدعي كله.
ما الذي ينبغي التحقق منه بشأن الباقي؟
تحقق من التمثيل الذي يتوقعه المستدعي ومن العلاقة الرياضية في الأمثلة المدعومة. أدرج حالات بلا باق وأخرى بباق غير صفري، كي لا يجتاز الاقتراح الفحص بمجرد معالجة قسمة سهلة.
هل الدالة الرياضية الأقصر أحق بالثقة؟
ليس بالضرورة. راجع احتفاظ النسخة الأقصر بالتحقق من المدخلات واصطلاحات المخرجات وسلوك الحالات الحدية. اطلب سبب كل تبسيط واختبر العقد؛ فالإيجاز لا يثبت استمرار صحة افتراض رياضي.
MonicVale · آخر تحديث 2026-10-25