قاعدة يوم القيامة (Doomsday rule): كيف تحسب يوم الأسبوع لأي تاريخ ذهنيًا

شروحات تقنية

قاعدة يوم القيامة (Doomsday rule) هي خوارزمية حساب ذهني ابتكرها عالم الرياضيات جون كونواي عام 1973، تتيح لك معرفة يوم الأسبوع لأي تاريخ ميلادي (السبت، الأحد، الاثنين…) في ثوانٍ ودون تقويم أو حاسبة. الفكرة الأساسية أن في كل سنة يومًا مرجعيًا واحدًا اسمه «يوم القيامة»، وتقع عليه مجموعة من التواريخ سهلة الحفظ، فإذا عرفت هذا اليوم صار حساب أي تاريخ آخر مجرد جمع وطرح بسيط.

قبل أن نبدأ، تصحيح مهم: رغم أن السؤال يربط القاعدة بـ«هياكل البيانات»، فهي ليست هيكل بيانات (Data Structure) مثل القوائم أو الأشجار، بل خوارزمية/حيلة حسابية لتحويل تاريخ إلى يوم أسبوع. علاقتها بعلوم الحاسب أنها مثال أنيق على الحساب المعياري (Modular Arithmetic)، وهي أشهر بديل ذهني لخوارزميات برمجية مثل «تطابق زيلر» التي تؤدي المهمة نفسها داخل الكود.

لماذا تهم المبرمجين ومهتمي الخوارزميات؟

  • إنها تطبيق مباشر لعملية «باقي القسمة على 7» (mod 7)، وهي جوهر أي حساب دوري في البرمجة.
  • تشرح بصريًا كيف يتكرر التقويم الميلادي بنمط ثابت كل 400 سنة، وهو ما تعتمد عليه مكتبات التواريخ.
  • تصلح تمرينًا ذهنيًا ممتازًا لفهم الفرق بين حل نظري «للبشر» وحل برمجي «للآلة».

المبدأ: «يوم القيامة» لكل سنة

تقع التواريخ التالية دائمًا على يوم القيامة نفسه في أي سنة، وهي سهلة الحفظ:

  • الأشهر الزوجية: 4/4، 6/6، 8/8، 10/10، 12/12.
  • عبارة «من 9 إلى 5 في متجر 7‑11»: 5/9، 9/5، 7/11، 11/7.
  • 14 مارس (يوم الپاي 3.14)، وآخر يوم في فبراير (28 أو 29).
  • 3 يناير في السنة العادية، و4 يناير في السنة الكبيسة.

فإذا عرفت أن يوم القيامة لسنة ما هو «السبت» مثلًا، فأنت تعرف فورًا أن 4 أبريل و6 يونيو و8 أغسطس وكل التواريخ أعلاه تقع يوم السبت.

الخطوة الأولى: يوم مرجعي القرن

لكل قرن يوم قيامة ثابت يُبنى عليه الحساب:

  • 1800–1899: الجمعة
  • 1900–1999: الأربعاء
  • 2000–2099: الثلاثاء
  • 2100–2199: الأحد

ثم يتكرر النمط نفسه (ثلاثاء، أحد، جمعة، أربعاء) كل 400 سنة.

الخطوة الثانية: يوم قيامة السنة

خذ آخر رقمين من السنة وسمِّهما y، ثم:

  1. احسب a = ناتج قسمة y على 12 (بدون الكسر).
  2. احسب b = باقي قسمة y على 12.
  3. احسب c = ناتج قسمة b على 4 (بدون الكسر).
  4. اجمع: المجموع = a + b + c.
  5. يوم القيامة = (يوم مرجعي القرن + المجموع) ثم خذ باقي القسمة على 7.

نرقّم الأيام هكذا: الأحد = 0، الاثنين = 1، الثلاثاء = 2، الأربعاء = 3، الخميس = 4، الجمعة = 5، السبت = 6.

مثال — سنة 2026: y = 26. إذًا a = 2، وb = 2، وc = 0، والمجموع = 4. يوم مرجعي القرن للألفية الثالثة هو الثلاثاء = 2. الناتج = (2 + 4) mod 7 = 6 = السبت. أي أن يوم القيامة في 2026 هو السبت، وعليه يقع 4 أبريل و8 أغسطس و3 يناير 2026… وكلها أيام سبت.

الخطوة الثالثة: انتقل إلى تاريخك المطلوب

ابحث عن أقرب «تاريخ قيامة» في نفس الشهر، ثم عُدّ فرق الأيام وطبّق mod 7.

مثال محلول — 23 مارس 2005:

  1. y = 5 → a = 0، b = 5، c = 1، المجموع = 6.
  2. يوم القيامة = (2 + 6) mod 7 = 1 = الاثنين.
  3. في مارس، تاريخ القيامة هو 14 مارس (يوم الپاي) = الاثنين.
  4. من 14 إلى 23 = 9 أيام. و9 mod 7 = 2.
  5. الاثنين + يومين = الأربعاء. فيكون 23 مارس 2005 يوم أربعاء (وهو صحيح فعليًا).

قاعدة يوم القيامة أم خوارزمية زيلر؟

المعيارقاعدة يوم القيامةتطابق زيلر (Zeller)
الغرض الأمثلحساب ذهني سريع للإنسانتنفيذ داخل الكود
طريقة الحفظتواريخ ومرجع قرنمعادلة رياضية واحدة
احتمال الخطأ يدويًامنخفض بعد التمرّنمرتفع (كسور وأقواس)
المرونة برمجيًاليست الأنسبممتازة ومباشرة

الخلاصة العملية: في الكود تُستخدم عادة خوارزمية زيلر أو خوارزمية ساكاموتو أو ببساطة دوال التاريخ الجاهزة في اللغة؛ أما قاعدة كونواي فهي الأفضل حين تريد الإجابة بذهنك أمام الآخرين.

خطأ شائع ونصيحة عملية

الخطأ الأكثر تكرارًا هو نسيان تعديل يناير وفبراير في السنوات الكبيسة: تاريخ القيامة يصبح 4 يناير و29 فبراير بدل 3 يناير و28 فبراير. تذكّر قاعدة الكبس: السنة كبيسة إذا قبلت القسمة على 4، إلا سنوات القرون التي لا تقبل القسمة على 400 (فسنة 1900 ليست كبيسة، و2000 كبيسة). ونصيحة من التجربة: تمرّن أولًا على تواريخ ميلاد تعرف أيامها مسبقًا للتحقق من إتقانك للخطوات قبل أن تجرّبها أمام الناس.

الأسئلة الشائعة

هل قاعدة يوم القيامة لها علاقة بنهاية العالم؟ لا، الاسم مجرد تسمية طريفة اختارها كونواي؛ «يوم القيامة» هنا يعني اليوم المرجعي الثابت في السنة فقط.

هل تصلح للتواريخ قبل عام 1582؟ القاعدة مبنية على التقويم الميلادي (الگريگوري)، فالتواريخ الأقدم تتبع التقويم اليولياني بمرجع قرن مختلف.

كم أحتاج من الوقت لإتقانها؟ مع التمرّن اليومي القصير، يصل كثيرون إلى الحساب في أقل من 5 ثوانٍ خلال أسبوعين تقريبًا.

ما الفرق بينها وبين دالة التاريخ في لغة البرمجة؟ الدالة الجاهزة أدق وأسرع للآلة، لكن القاعدة مصممة ليؤديها عقل الإنسان دون أدوات، وهي قيمتها الحقيقية.