عداد التكرارات يلخص عدد مرات القيم، لكن بعض عملياته تعرض موجبًا فقط بينما تحفظ أخرى الصفر والسالب. سنراجع نموذجًا أصليًا من أربع فئات ونميز وجود المفتاح من العدد والمجموع، ثم ننفذ غلافًا يفصل الفائض والعجز. البيانات والكود أمثلة محلية مؤلفة لا سجل مخزون حقيقي.
الخلاصة السريعة
Counter يربط كل مفتاح بعدد، لكن وجود المفتاح والعدد المخزن والمجموع ليست معلومة واحدة. بعض عمليات المجموعات المتعددة تحتفظ فقط بنتائج موجبة.
- في نموذجنا المتاح A: 4,B: 2,C: 1,D: 0 والمطلوب A: 1,B: 2,C: 3,D: 1. subtract يحفظ الفرق A: 3,B: 0,C:-2,D:-1، بينما الطرح A-B لعدادين يحتفظ بالموجب A: 3 فقط.
- العدد 0 لا يحذف المفتاح. قراءة مفتاح غائب بالفهرسة تعيد 0 في Counter، لكنها لا تضيفه تلقائيًا، و get دون قيمة افتراضية له عقد مختلف.
- len يعطي عدد المفاتيح المخزنة، و total مجموع الأعداد. في الفرق المؤلف عدد المفاتيح 4 والمجموع 0 مع وجود موجب وسالب.
- elements على أعداد صحيحة يعرض نسخًا من المفاتيح ذات عدد موجب، فيعيد A ثلاث مرات في المثال ولا يعرض صفر B أو القيم السالبة.
- update يضيف أعدادًا ولا يستبدلها مثل تحديث قاموس عادي؛4 ثم إضافة 2 تعطي 6، أما استبدالها فيعطي 2.
- القيم السالبة في الفرق حساب موقع من كميات معلنة، وليست قطعًا مادية سالبة. نحدد ما تعنيه البيانات قبل تحويلها إلىعرض موجب فقط.
- تساوي عدادين مع مفتاح صفري وغائب في Python3.14 لا يعني تطابق مفاتيحهما المخزنة. والبحثعنمفتاحبـ in ليس اختبار أن عدده موجب.
- الكود الأصلي يعيد الفرق والموجب والعجز والمفاتيح الصفرية منفصلةً، ولا ينفذعملًا أو يثبت صحة قياس. الصور والاختبارات أمثلة محلية مؤلفة، لا سجلًا واقعيًا.
حدد هل تريد تكرارات أو فروقًا موقعة
يشرح المرجع الأول Counter بوصفه حاوية تربط مفاتيح قابلة للتجزئة بأعداد، ويمكن أن تخزن صفرًا أو أعدادًا سالبة. ويصف مرجع NIST المجموعة المتعددة بأنها تسمح بتكرار القيم. ليس كل قاموس عد ذي قيمة سالبة تمثيلًا مباشرًا لعدد نسخ موجودة فعليًا؛ سنميز سجل الفرق الموقع من عرض مجموعة ذات تكرارات موجبة.
نختار مفاتيح A و B و C و D لأربع فئات مؤلفة. لا نصف بها مخزون مؤسسة أو نتائج قياس، بل نعرف كميتين ونطرح إحداهما من الأخرى. نحتاج أن نذكر أي مجموعة تمثل المتاح وأيها المطلوب، لأن قلب جهة الطرح يقلب الإشارات ومعناها. الاسم Counter لا يقرر هذا المعنى بدل تعريف المدخلات.
كما نفصل ما يخزن من المخرج الذي تعرضه عملية معينة. قد يحوي العداد مفتاحًا بعدد 0، ثم تختفي هذه الخانة في عملية تحتفظ بالموجب فقط. غيابها من ذلك العرض ليس دليلًا أنها لم توجد في السجل الأصلي. سنحفظ الحالات قبل كل عملية ونتائجها كي تظهر هذه الفروق، بدل الاكتفاء بقائمة موجزة للأكثر تكرارًا.
مثال من أربع فئات بأعداد معلنة
المتاح في نموذجنا 4 من A و 2 من B و 1 من C وصفر من D. والمطلوب 1 من A و 2 من B و 3 من C و 1 من D. الفرق في A هو 3، وفي B صفر، وفي C سالب 2، وفي D سالب 1. نكتب العلامة إلى جانب كل عدد، ونعلن أن الفرق يساوي المتاح ناقص المطلوب، لا المطلوب ناقص المتاح.
يعني الفرق الموجب وجود فائض في النموذج، والسالب نقصًا عن الكمية المطلوبة التي عرفناها. لكننا لم نقس شيئًا حقيقيًا، ولم نقرر أن طلبًا يجب تنفيذه أو أنه يعكس حاجة فعلية. الأسماء مجرد فئات، والأعداد فرضناها للشرح. تفسير الفرق بهذه اللغة يخص النموذج الذي أعلنناه، ولا يجعل كل Counter في برنامج آخر سجل متاح ومطلوب.
الرسم الرئيسي يضع صف المتاح وصف المطلوب وصف الفرق، مع لون يميز الصفر من الموجب والسالب. من المهم أن نقرأ كل فئة بنفسها؛ جمع الأعداد قد يلغي بعضها عدديًا بينما يختلف نوع ما يمثله الفائض عما يمثله العجز. لا نستبدل فئة C بـ A لمجرد أن أحد العددين موجب والآخر سالب دون علاقة تحويل لم نضعها.
طرح يحفظ الصفر والسالب
نأخذ نسخة من عداد المتاح، ثم نستعمل subtract مع عداد المطلوب. النتيجة تحفظ الفروق الأربعة، بما فيها صفر B وسالب C و D، وفق عقد هذه الطريقة. المتاح الأصلي يبقى كما كان إذا أجرينا العملية على نسخة مستقلة. نحتاج هذه المعلومة كي نميز فرقًا حسبناه من تعديل السجل الأول الذي سنستعمله مرة أخرى لاحقًا.
في A طرحنا 1 من 4 فحصلنا على 3. وفي B طرحنا 2 من 2 فحصلنا على 0. وفي C طرحنا 3 من 1 فحصلنا علىسالب 2، وفي D طرحنا 1 من 0 فحصلنا علىسالب 1. وجود كل خانة بعد العملية يساعد على مراجعة الفرق فئةً فئة، ولا يعني أن الطريقة حولت الطلب إلى عمل منجز.
لا نحذف القيم السالبة لمجرد أن اسم البنية يوحي بعد النسخ. يمكن أن يكون المطلوب سجل فرق موقع، وتكون هذه القيم معلومات يحتاجها السؤال. إذا أردت عرض ما بقي موجبًا فقط، فهذه خطوة أخرى أو عملية لها عقد مختلف. تثبيت هدف المخرج قبل اختياره يمنع أن نخفي العجز ثم نزعم أن التقرير شامل لكل ما حسبناه.
عامل الطرح يعرض الموجب فقط
إذا استعملنا المتاح ناقص المطلوب بعامل الطرح بين عدادين، تكون النتيجة A بعدد 3 فقط في هذا المثال. لا تظهر B ذات النتيجة الصفرية، ولا C و D ذاتا النتيجة السالبة. تشرح الوثائق أن مخرجات عمليات المجموعات المتعددة تستبعد الأعداد غير الموجبة. لا نقرأ هذا الإخراج على أنه الفرق الموقع الكامل الذي حسبناه بالطريقة السابقة.
يمكن مراجعة النتيجة حسابيًا بطرح كل فئة ثم الاحتفاظ فقط بما يزيد على 0. هذا مرجع واضح لسبب خروج A وبقاء غيرها خارج العرض. لكنه لا يغير حقيقة أن هناك نقصًا في C و D ضمن نموذج المتاح والمطلوب. إذا لم نحفظ المدخلات أو الفرق قبل التصفية، فقد لا نستطيع إعادة مقادير النقص من المخرج الموجب وحده.
الرسم الداخلي يقارن subtract بعامل الطرح على البيانات نفسها. اتفاق القيمة 3 في A لا يجعل النتيجتين متطابقتين، كما أن عدد المفاتيح بعد التصفية 1 لا يعني أن النموذج كان من فئة واحدة. الأسماء التي تظهر أو تختفي جزء من عقد العملية، لذلك نسجل العقد إلى جانب الأعداد قبل أن نربطها بتقرير أو قرار.

صفر مخزن يختلف من مفتاح غير حاضر
نفترض أن B مخزنة بعدد 0 في الفرق، بينما المفتاح X غير حاضر أصلًا. قراءة العداد بالفهرسة عند B تعيد 0، وعند X تعيد 0 كذلك في Counter. لكن سؤال العضوية يرى B ضمن المفاتيح ولا يرى X. القراءة الخاصة للغائب لا تضيف المفتاح إلى السجل من تلقاء نفسها، وسنراجع هذا الأثر محليًا مع مقارنة الحالة قبل القراءة وبعدها.
إذا استعملنا get على X دون قيمة افتراضية، يمكن أن نحصل على None، لا 0، لأنها طريقة قاموس لها عقد القراءة الخاص بها. اختيار get مع قيمة افتراضية 0 يجعل نتيجة هذه القراءة صفرًا، لكنه لا يخلق سجلًا يؤكد أننا رصدنا صفرًا واقعيًا. تعريف القيم الافتراضية في البرنامج يختلف من معلومة قياس أو فئة سجلت فعلًا.
ولحذف B الصفرية نحتاج عملية حذف معلنة، لا مجرد إسناد صفر جديد إليها. قد نحتفظ بها لأن وجود الفئة مهم في تقرير ما، أو نحذفها ضمن عرض لا يحتاجها. القرار يتبع معنى المخزن والمخرج. لا نجعل كل صفر مرادفًا للغياب، ولا كل غياب مرادفًا لصفر مؤكد، ولو تساوت نتيجة قراءة عددية واحدة.
عدد المفاتيح والمجموع لا يحصيان الشيء نفسه
في الفرق الموقع من مثالنا أربعة مفاتيح مخزنة، ولذلك len يعيد 4. مجموع أعدادها 3 مع 0 معسالب 2 معسالب 1 يساوي 0، فيعيد total صفرًا. توجد قيم غير صفرية مع أن المجموع صفر؛ ألغى الموجب والسالب بعضها عدديًا. لا نستخدم هذا المجموع دليلًا أن العداد فارغ أو أن كل فئة متطابقة بين المتاح والمطلوب.
ولو كانت جميع القيم المخزنة صفرًا مع بقاء أسماء الفئات، يكون عدد المفاتيح موجبًا أيضًا. يمكن أن تكون الحاوية غير فارغة من جهة مفاتيحها، دون تكرارات موجبة إذا أردت تمثيل مجموعة متعددة. كل اختبار يحتاج اسم السؤال: هل توجد مفاتيح؟ هل يوجد موجب؟ هل المجموع صفر؟ هذه نتائج يمكن أن تختلف على السجل نفسه دون تعارض.
نراجع المثال بعد التصفية للموجب؛ يبقى A بعدد 3، فعدد المفاتيح 1 ومجموع الأعداد 3. لا نقارن 1 بـ 4 بوصفه عدد قطع، ولا 3 بـ 0 بوصفه تغيرًا فعليًا في كميات المدخلات. الذي تغير هو نطاق العرض. السجل الموقع والعرض الموجب يتبعان تعريفين، ومعرفة أيهما نقرأ ضرورية قبل تفسير الإجمالي.
إعادة العناصر من الأعداد الموجبة
طريقة elements تعيد نسخًا من كل مفتاح بحسب عدد صحيح موجب، وتتجاهل الأعداد التي تقل عن 1. في الفرق المؤلف تعيد A ثلاث مرات، ولا تعيد B ولا C ولا D. هذه قائمة مولدة من معنى محدد للأعداد، وليست كشفًا بكل المفاتيح المخزنة أو استعادة لتتابع وصول أصلي كانت فيه الأسماء متداخلة.
إذا جمعنا ستة عناصر مؤلفة في البداية، ثم خزنا تكراراتها، فإن إعادة عناصر العداد تجمع نسخ المفتاح كما يسمح تمثيله، ولا تعيد مواضع كل ظهور في القائمة الأصلية. لا نطلب منه ترتيبًا زمنيًا لم نخزنه. يمكن حفظ القائمة الأصلية إذا كان تسلسلها مهمًا، بينما يستعمل العداد لتلخيص عدد مرات كل قيمة.
كما أن العد غير الصحيح يحتاج قراءة عقد الطريقة. مثالنا أعداد صحيحة، لذلك إعادة النسخ مفهومة. لا نتوقع أن قيمة 1.5 تعيد نسخة ونصفًا من رمز في قائمة عادية، ولا نحولها إلى 2 دون قاعدة تقريب يطلبها السؤال. تتبع نوع العدد ومعنى إعادة العناصر يجعل نتيجة elements محددة بدل نسبة معلومات إلى الحاوية لا تحملها.
تحديث العداد يجمع لا يستبدل
نبدأ A بعدد 4، ثم نستعمل update بخريطة تعطي A عدد 2. يصبح العدد 6، لأن طريقة العداد تضيف الأعداد إلى الموجود. أما تحديث قاموس عادي بالقيمة 2 فيستبدل 4 بـ 2. الاسم نفسه update لا يكفي لتوقع الأثر دون معرفة نوع الحاوية والعقد الذي تستخدمه. سننفذ الحالتين في نسختين منفصلتين للمراجعة.
وعندما يكون المدخل متتابعة عناصر بدل خريطة أعداد، تعني update إضافة ظهور لكل عنصر في تلك المتتابعة. إذا أعطينا A ثم A ثم C، تزيد A مرتين وتزيد C مرة. لا نقرأ هذا على أنه طلب جعل A مساوية 2 بصرف النظر عن قيمتها القديمة. قيمة التكرار وصلت بطريقة تختلف من إسناد عدد نهائي إلى المفتاح.
يمكن أن تحتاج المهمة إعادة عد كاملة من مصدر جديد، أو إضافة وصول لاحق إلى سجل قائم. حدّد أيهما تريد قبل اختيار التحديث أو إنشاء عداد جديد. لا نجمع تقريرين يحتفظ كل منهما بالأحداث نفسها ثم نزعم أن الإجمالي يحصيها مرة واحدة. بنية الجمع تنفذ حسابًا على ما أعطيناه؛ منع عد الحدث مرتين مسؤولية تعريف البيانات التي تلخصها.
متتابعة رموز أو عنصر نصي واحد
إذا أعطينا Counter النص ABBA بوصفه متتابعة، تصبح المفاتيح رموز النص وتكون A بعدد 2 و B بعدد 2. وإذا أعطيناه قائمة تحوي النص ABBA عنصرًا واحدًا، يصبح ذلك النص مفتاحًا واحدًا بعدد 1. لا نعيد تسمية النتيجتين عد الكلمات نفسه؛ طريقة تقسيم المدخل تحدد ما يعد عنصرًا في العقد.
وفي نصوص اللغة الطبيعية، قد نحتاج تعريفًا للوحدة التي نريد عدها، مثل كلمة مقسمة وفق قاعدة معلنة أو سلسلة رموز. لا نستنتج قاعدة لغوية من عمل Counter على عناصر جاهزة. أمثلتنا مفاتيح بسيطة مؤلفة، وليست تحليلًا لنص عربي حقيقي أو حكمًا على عدد وحداته اللغوية عند اختلاف علامات ورموز.
وإذا كان المدخل قائمة أزواج من مفتاح وعدد، فإن تمريرها كمتتابعة قد يعد كل زوج عنصرًا بدل استعمال العدد في خانته. إذا أردت خريطة أعداد، عرّفها بوصفها خريطة. لا نحول الشكل المرئي للصف إلى معنى لم يطلبه المُنشئ. قراءة النوع والسياق قبل العد تمنع مخرجًا صحيحًا للمدخل المقدم لكنه يجيب عن سؤال آخر.
كود يفصل الفرق والفائض والعجز
الغلاف التالي يقبل في أمثلتنا خريطتين بمفاتيح نصية وأعداد صحيحة غير سالبة. ننسخ المتاح في Counter جديد، ونطرح المطلوب بطريقة تحتفظ بالإشارة. ثم نبني ثلاثة عروض مستقلة: الفائض الموجب، والعجز بمقدار موجب يصف نقصًا، والمفاتيح التي بقيت صفرًا. لا ننفذ طلبًا أو نغير الخريطتين الأصليتين.
هذه الأسماء تصف اتفاق المتاح ناقص المطلوب الذي اخترناه. إذا غيرت جهة الطرح أو معنى المدخلات، يجب أن تراجع أسماء المخرجات أيضًا. وليس كل عدد سالب في Counter عجزًا بالضرورة؛ يمكن أن يكون معنى السجل مختلفًا. الكود يعطي العرض الذي عرفناه للبيانات المؤلفة، لا تفسيرًا عامًا لكل عداد في أي برنامج.
نراجع النتيجة مع طرح مباشر لقيم قاموسين على اتحاد مفاتيحهما. هذا مرجع بسيط مستقل عن تنسيق العرض المختصر الذي يظهر عند طباعة Counter. كما نختبر مفاتيح صفرية ومفاتيح ظهرت في المطلوب فقط، ثم نراجع أن أي اسم لم يختف من الفرق الكامل قبل تصفية الموجب. الاختلاف بين المعلومات المخزنة والعرض هو ما نريد إبقاءه ظاهرًا.
def difference_views(available, requested):
from collections import Counter
signed = Counter(available)
signed.subtract(Counter(requested))
surplus = {key: count for key, count in signed.items() if count > 0}
shortage = {key: -count for key, count in signed.items() if count < 0}
zero_keys = [key for key, count in signed.items() if count == 0]
return dict(signed), surplus, shortage, zero_keys
المساواة لا تثبت تطابق المخزن حرفيًا
في Python3.14 تتعامل مقارنة المساواة للعداد مع مفتاح غائب على أنه ذو عدد 0. لذلك يمكن أن يتساوى عداد A بعدد 1 معآخر A بعدد 1 و B بعدد 0، رغم اختلاف مفاتيحهما المخزنة. لا نجعل نتيجة هذه المساواة دليلًا على تطابق قائمتي المفاتيح أو على أن B ذكرت صراحةً في المدخل الأول.
إذا كان المطلوب مقارنة البنية المخزنة، يمكن مراجعة خرائط القيم والمفاتيح بمعيار معلن بدل استيراد تعريف مساواة مختلف للسؤال. وإذا كان المطلوب المقارنة من جهة الأعداد مع اعتبار الغائب صفرًا، فقد يكون عقد Counter مناسبًا. لا توجد مفارقة بين نتيجتين تجيبان عن معيارين مختلفين؛ نحتاج إلى كتابة المعيار إلى جانب الاختبار.
ويتصل بذلك سؤال العضوية. B قد تكون ضمن العداد بعدد 0، فيكون B في العداد صحيحًا بينما عددها الموجب غير موجود. لا نستبدل اختبار العدد بأداة in دون مراجعة المقصود. هذه الفروق صغيرة في سطر كود، لكنها تحدد هل وصفنا وجود فئة في السجل أم وجود نسخ موجبة منها في نموذج تكرارات.
الجمع والتقاطع والاتحاد يحتاج كل منها عقده
يمكن جمع عدادين أو أخذ أصغر أو أكبر عدد لكل مفتاح في عرض المجموعات المتعددة. نختارعدادًا أول A بعدد 4 و B بعدد 1، وثانيًا A بعدد 2 و C بعدد 3. التقاطع يحتفظ A بعدد 2 فقط، لأن العدد الأصغر للفئات التي يغيبها أحد الجانبين 0. والاتحاد يحتفظ A بعدد 4 و B بعدد 1 و C بعدد 3 بأخذ الأكبر.
هذا الاتحاد ليس جمع كميات؛ الجمع يعطي A بعدد 6 و B بعدد 1 و C بعدد 3. لا ننقل كلمة اتحاد من مجموعات بلا تكرار ثم نفترض أن اختلاف العدد غير مهم، ولا نسمي القيم الكبرى إجمالي وصول. العملية تعبر عن اختيار الحد الأعلى بين عددي كل مفتاح، وهو مطلب مختلف من إضافة ما في سجلين.
ونطاق عرض المجموعات المتعددة يستبعد نتائج غير موجبة، كما ذكرنا في الطرح. إذا احتجنا مجموعًا موقعًا يبقي كل قيمة، نختار حسابًا مناسبًا لذلك الهدف ونحفظه قبل أي تصفية. لا نجعل نجاح صيغة مختصرة حجة أن كل عملية باسم رياضي تعطي المعنى الذي نريده للسجل. نراجع السلوك فئةً فئة في مثال صغير ثم نربطه بالسؤال.
ترتيب الأكثر شيوعًا لا يعطي دليل جودة
في فرقنا الموقع A بعدد 3 و B بعدد 0 و C بعددسالب 2 و D بعددسالب 1، يضع ترتيب الأعداد الأكبر A أولًا ثم B ثم D ثم C. نتيجة most_common يمكن أن تحوي صفرًا وسالبًا، ولا تجعل كل مفتاح رجع منها تكرارًا موجبًا. إذا أردت عرضًا للموجب وحده، فحدد هذه التصفية قبل أن تفسر عدد الصفوف أو ترتيبها.
ومع أعداد متساوية، تعتمد هذه الواجهة ترتيبًا يرتبط بأول ظهور للمفتاح في السجل. إذا أردت معيارًا آخر للتعادل مثل اسم الفئة، فهذه سياسة إضافية عليك إعلانها. لا نقرأ تساوي عددين دليلًا أن الفئتين تحملان المعنى نفسه أو أن إحداهما أولى بقرار عملي. الترتيب العددي يخدم مطلبًا محددًا ولا يملك معلومات غير موجودة في المدخل.
كما أن كلمة الأكثر لا تحكم على جودة عنصر أو نفعه. في المثال الأول 4 من A تعني العدد الذي فرضناه، لا حكمًا على أفضلية الفئة. وغياب فئة من عرض مختصر قد يأتي من اختيار حد عدد الصفوف أو من التصفية، لا من غيابها الأصلي. سجل طريقة العرض إلى جانب ما يظهر منها كي يظل تفسير المخرج مرتبطًا بحدوده.
احفظ ما لا يمكن إعادته من العرض الموجب
المخرج A بعدد 3 وحده لا يحدد مقدار نقص C و D في مثالنا. يمكن لمجموعات مدخلات مختلفة أن تعطي الموجب نفسه مع فروق سالبة مختلفة. إذا كان العجز جزءًا من السؤال، احتفظ بالفرق الموقع أو بالمدخلات الأصلية التي تسمح بإعادة حسابه. لا نحاول استنتاج قيمة حذفناها عمدًا من مجرد اتفاق ما بقي في فئة أخرى.
كما أن إدراج مفتاح صفري قد يحفظ أن الفئة ذكرت في السجل، لكن لا يحفظ سبب الصفر من نفسه. ربما كان 0 مدخلًا معلنًا أو نتيجةطرح متساويين. نحتاج سجل العملية إذا كان هذا السبب مهمًا. Counter يمثل خريطة قيم، لا تاريخًا كاملًا بكل ما تغير فيها أو نموذج إثبات لقياس لم نجمع بياناته.
وفي قوائم التكرارات، تلخيص الأسماء إلى أعداد يفقد ترتيب الظهور التفصيلي. يمكن إعادة نسخ الأسماء الموجبة، لكن ليس موضع كل ظهور أصلي دون معلومات إضافية. حدد أي معلومات تريد حفظها قبل الاقتصار على ملخص. النتيجة الموجزة قد تكون مفيدة جدًا لمطلبها، لكن اختصارها لا يحوّلها إلى مصدر لكل تفاصيل البيانات التي لخصتها.
فحوص محلية على المعاني الثلاثة
ننفذ المثال على خريطتين مؤلفتين، ثم نقارن الفرق الكامل بطرح مباشر على اتحاد المفاتيح. بعد ذلك نفحص الفائض والعجز والصفر بتصفية واضحة للأعداد التي حسبناها. نراجع أن len و total و elements تجيب عن أسئلة مختلفة، وأن قراءة غائب لم تغير مفاتيح الحالة التي حفظناها قبل القراءة.
نضيف حالات فارغة وصفرية وتكرارات بسيطة، ثم نقارن subtract بعامل الطرح على مدخلات صغيرة غير سالبة. هذه مراجعة مستقلة لسلوك التصفية إلى الموجب، ولا نستخدمها ادعاءً أن كل نوع عدد أو مفتاح أو واجهة غير مقروءة تصرفت بالطريقة نفسها. أمثلتنا مفاتيح نصية وأعداد صحيحة، ولا نقيس أداء الملف أو حجمًا كبيرًا من بيانات المستخدم.
نحفظ نسخة Python ونسخة التوثيق ونتائج التنفيذ، ونترك معيار السؤال واضحًا. إذا بدا أن صفرًا غائب في مخرج، افحص أولًا هل العملية استبعدت غير الموجب، ثم هل نعني بالمقارنة مفاتيح المخزن أم أعداده. يوجه هذا الفحص القارئ إلى موضع اختلاف المعنى قبل تعديل الكود اعتباطيًا. صحة رقم واحد لا تثبت شمول العرض لكل ما طلبناه.
قائمة مراجعة قبل تفسير عداد
حدد وحدة العناصر التي تعدها وجهة أي طرح، ثم ميز المفتاح المخزن من العدد الذي يعود عند قراءته. راجع هل تحتاج خريطة موقعة أو مجموعة ذات أعداد موجبة فقط، وهل الصفر مفيد في السجل أم تريد حذفه من عرضك. لا تحول len إلى عدد نسخ، ولا total صفرًا إلى تقرير فراغ، ولا in إلى اختبار عدد موجب.
وعند update اسأل هل تريد إضافة تكرارات أم استبدال عدد نهائي. وإذا أعدت عناصر عبر elements، فلا تنسب إلى القائمة الجديدة ترتيب وصول لم يخزنه العداد. وعند عرض الأكثر شيوعًا، اذكر التصفية وعدد الصفوف وسياسة التعادل حتى يظل المخرج مفهومًا ضمن السؤال الذي بني عليه.
وأخيرًا، احفظ المدخلات أو الفرق الكامل إذا احتجت معلومات لا يحتفظ بها الموجب. نماذجنا أعداد أصلية منفذة محليًا، لا كميات مادية سالبة أو نتائج تنفيذ لطلبات. تستطيع إعادة مراجعة الفئات الأربع في الرسم، ثم مقارنة النتيجة الموقعة بالمخرج A بعدد 3 فقط. بهذه البطاقة تظل القيم التي ظهرت أو اختفت أثرًا لعقد واضح، لا سببًا لاستنتاج معنى لم نعطه للبيانات.
وللتفريق بين الإجراء والنتيجة التي نحفظها، اقرأ الخوارزمية والنموذج في تعلم الآلة.
المصادر ومتابعة القراءة
- Python3.14: Counter والأعداد الموقعة وعمليات المجموعات المتعددة (يفتح في نافذة جديدة)docs.python.org
- NIST: bag والمجموعة المتعددة التي تسمح بالتكرار (يفتح في نافذة جديدة)xlinux.nist.gov
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
