تحديد يوم الأسبوع

من testwiki
اذهب إلى التنقل اذهب إلى البحث

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

المفاهيم

في الحساب العددي تمثل أيام الأسبوع بأرقام أيام الأسبوع. إذا كان يوم الاثنين هو اليوم الأول من الأسبوع فمن الممكن ترميز الأيام من 1 إلى 7، وذلك من الاثنين إلى الأحد كما هو متبع في آيزو 8601. كما يمكن أيضًا حساب اليوم المحدد بالرقم 7 على أنه 0، وذلك بتطبيق المعامل الحسابي 7 الذي يحسب الباقي من الرقم بعد القسمة على 7. ويكون التعامل مع الرقم 7 على أنه 0، والرقم 8 على أنه ، والرقم 9 على أنه 2، والرقم 18 على أنه 4 وهكذا. فإذا احتُسب يوم الأحد باعتباره اليوم الأول فبعد 7 أيام ( أيقالب:فراغاتاليوم الثامن هو أيضًا يوم أحد واليوم الثامن عشر هو نفس اليوم الرابع وهو يوم أربعاء لأنه يقع بعد يوم الأحد بثلاثة أيام ( أي إنه قالب:تعبير رياضي). قالب:ملا

معيار الاثنين يوم الثلاثاء الأربعاء يوم الخميس جمعة السبت الأحد أمثلة الاستخدام
ايزو 8601 1 2 3 4 5 6 7 قالب:مونو (4DOS);[١] قالب:مونو (HP Prime)[٢]
0 1 2 3 4 5 6
2 3 4 5 6 7 1 قالب:مونو (NetWare، DR-DOS[٣]); قالب:مونو (4DOS)[١]
1 2 3 4 5 6 0 الآلات الحاسبة المالية من HP

النهج الأساسي لجميع الطرق تقريبًا لحساب يوم الأسبوع يبدأ بالبدء من "تاريخ ثابت": زوج معروف (مثل 1 يناير 1800 باعتباره يوم أربعاء)، وتحديد عدد الأيام بين اليوم المعروف واليوم الذي تحاول تحديده واستخدام عامل القسمة مع باقي لحساب 7 للعثور على يوم عددي جديد في الأسبوع.

أحد الأساليب القياسية هو البحث عن (أو حساب باستخدام قاعدة معروفة) قيمة اليوم الأول من الأسبوع في قرن معين، والبحث عن (أو حساب باستخدام طريقة التطابق) تعديل للشهر، وحساب عدد السنوات الكبيسة منذ بداية القرن، ثم إضافة هذه النتائج مع عدد السنوات منذ بداية القرن ورقم يوم الشهر. في النهاية ينتهي الأمر بعدد الأيام الذي نطبق فيه عامل القسمة مع باقي 7 لتحديد يوم الأسبوع للتاريخ.[٤]

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

الأيام المقابلة

كل يوم سابع في الشهر له نفس اسم اليوم السابق:

يوم من

الشهر

قالب:Mvar
00 07 14 21 28 0
01 08 15 22 29 1
02 09 16 23 30 2
03 10 17 24 31 3
04 11 18 25 4
05 12 19 26 5
06 13 20 27 6

الأشهر المقابلة

"الأشهر المقابلة" هي تلك الأشهر ضمن السنة التقويمية التي تبدأ في نفس اليوم من الأسبوع. على سبيل المثال يتوافق شهري سبتمبر وديسمبر؛ لأن الأول من سبتمبر يقع في نفس اليوم مثل الأول من ديسمبر (حيث يوجد بالضبط ثلاثة عشر أسبوعًا من 7 أيام بين التاريخين). ويمكن أن تتوافق الأشهر فقط إذا كان عدد الأيام بين أيامها الأولى قابلاً للقسمة على 7، أو بمعنى آخر إذا كانت أيامها الأولى تفصلها عدد صحيح من الأسابيع. على سبيل المثال شهر فبراير من السنة العادية يتوافق مع شهر مارس لأن شهر فبراير يحتوي على 28 يومًا، وهو رقم قابل للقسمة على 7 حيث أن 28 يومًا تعادل أربعة أسابيع بالضبط. في السنة الكبيسة يتوافق شهري يناير وفبراير مع أشهر مختلفة عن السنة العادية، حيث أن إضافة 29 فبراير يعني أن كل شهر لاحق يبدأ بعد يوم واحد.

يتوافق شهر يناير مع شهر أكتوبر في السنوات العادية وشهري أبريل ويوليو في السنوات الكبيسة. كما يتوافق شهر فبراير مع شهري مارس ونوفمبر في السنوات العادية وأغسطس في السنوات الكبيسة. وشهر مارس يتوافق دائمًا مع شهر نوفمبر، وشهر أبريل يتوافق دائمًا مع شهر يوليو، وشهر سبتمبر يتوافق دائمًا مع شهر ديسمبر. حيث أن شهر أغسطس لا يتوافق مع أي شهر آخر في السنة العادية. وشهر أكتوبر لا يتوافق مع أي شهر آخر في السنة الكبيسة. شهر مايو ويونيو لا يتوافقان مع أي شهر آخر.

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

سنوات مشتركة السنوات الكبيسة كل السنوات قالب:Mvar
يناير أكتوبر 0
يمكن 1
فبراير أغسطس 2
فبراير مارس نوفمبر 3
يونيو 4
سبتمبر ديسمبر 5
يناير ابريل يوليو 6

السنوات المقابلة

هناك سبعة أيام محتملة لبدء العام والسنوات الكبيسة سوف تغير يوم الأسبوع بعد 29 فبراير. وهذا يعني أن هناك 14 تكوينًا يمكن أن يتضمنها العام. يمكن الإشارة إلى جميع التكوينات بحرف أبجدي ولكن بما أن 29 فبراير ليس له حرف مخصص له، فإن السنة الكبيسة لها حرفان أبجديان، أحدهما لشهري يناير وفبراير والآخر (خطوة واحدة إلى الوراء في التسلسل الأبجدي) من مارس إلى ديسمبر.

عام 2021 هو عام عادي يبدأ يوم الجمعة مما يعني أنه يتوافق مع العام التقويمي 2010. ويتوافق الشهرين الأولين من عام 2021 مع الشهرين الأولين من عام 2016. كذلك عام 2022 هو عام عادي يبدأ يوم السبت، مما يعني أنه يتوافق مع العام التقويمي 2011. والأشهر العشرة الأخيرة من عام 2022 تتوافق مع الأشهر العشرة الأخيرة من عام 2016. وعام 2023 هو عام عادي يبدأ يوم الأحد، مما يعني أنه يتوافق مع العام التقويمي 2017. 2024 هي سنة كبيسة تبدأ يوم الاثنين، مما يعني أنها تتوافق مع السنة التقويمية 1996. والشهرين الأولين من عام 2024 يتوافقان مع الشهرين الأولين من عام 2018. الأشهر العشرة الأخيرة من عام 2024 تتوافق مع الأشهر العشرة الأخيرة من عام 2019.

كل سنة كبيسة تتكرر مرة كل 28 سنة، وكل سنة عادية تتكرر مرة كل 6 سنوات ومرتين كل 11 سنة. على سبيل المثال كان آخر ظهور للسنة الكبيسة التي بدأت يوم الأربعاء هو عام 2020، وسيكون الظهور القادم في عام 2048. وبالمثل فإن السنوات المشتركة القادمة التي تبدأ يوم الجمعة ستكون 2027 و2038 ثم 2049. كلا العبارتين صحيحتان ما لم تتخطى سنة كبيسة، ولكن هذا لن يحدث حتى عام 2100.

للتفاصيل انظر الجدول أدناه.

عامل قسمة مع باقي للسنة من

القرن 28

قالب:Mvar
00 06 12 17 23 0
01 07 12 18 24 1
02 08 13 19 24 2
03 08 14 20 25 3
04 09 15 20 26 4
04 10 16 21 27 5
05 11 16 22 00 6

ملحوظات:

  • اللون الأسود يعني جميع أشهر السنة المشتركة
  • اللون الأحمر يعني الشهرين الأولين من السنة الكبيسة
  • اللون الأزرق يعني آخر 10 أشهر من السنة الكبيسة

القرون المقابلة

القرن اليولياني

عامل قسمة 700

القرن الميلادي

عامل قسمة 400 قالب:ملا

يوم
400: 1100 1800 ... 300: 1500 1900 ... شمس
300: 1000 1700 ... الاثنين
200 0900 1600 ... 200: 1800 2200 ... الثلاثاء
100 0800 1500 ... تزوج
700: 1400 2100 ... 100: 1700 2100 ... الخميس قالب:ملا
600: 1300 2000 ... الجمعة
500: 1200 1900 ... 000: 1600 2000 ... قعد

"السنة 000" هي -في التسلسل الزمني العادي- السنة 1 قبل الميلاد (التي تسبق السنة 1 بعد الميلاد). وفي الترقيم الفلكي للسنوات يأتي العام 0 بين 1 قبل الميلاد و1 بعد الميلاد. أما في التقويم اليولياني المسبق (أي التقويم اليولياني كما كان ليكون لو شغل بدرجة صحيحة منذ البداية) فيبدأ عام 1 قبل الميلاد يوم الخميس. وفي التقويم الغريغوري المبكر (سمي بهذا الاسم لأنه لم يكن مبتكراً حتى عام 1582) يبدأ العام 1 قبل الميلاد يوم السبت.

طرق جدولية لحساب يوم الاسبوع

الجدول الكامل: التقويمات الجوليانية والغريغورية

بالنسبة للتواريخ الجوليانية قبل عام 1300 وبعد عام 1999 يجب استخدام السنة الموجودة في الجدول والتي تختلف بمضاعف دقيق يبلغ 700 عام. وبالنسبة للتواريخ الميلادية بعد عام 2299 فيجب استخدام السنة الموجودة في الجدول والتي تختلف بمضاعف دقيق يبلغ 400 عام. كما تشير القيم " قالب:صغير " إلى " قالب:صغير " إلى الباقي عند قسمة قيمة المئات على 7 و4 على التوالي، مما يشير إلى كيفية امتداد السلسلة في أي اتجاه. وتُعرض القيم الجوليانية والغريغورية من عام 1500 إلى عام 1999 للراحة. وتشير الأرقام المكتوبة بخط غامق (على سبيل المثال 04 ) إلى السنة الكبيسة. فإذا انتهت السنة بالرقم 00 وكانت المئات فيها مكتوبة بالخط العريض فهي سنة كبيسة. وهكذا يشير الرقم 19 إلى أن عام 1900 ليس سنة كبيسة غريغورية (ولكن الرقم 19 في العمود اليولياني يشير إلى أنها سنة كبيسة جوليانية، كما هي الحال مع جميع السنوات اليوليانية x 00). حيث يشير الرقم 20 إلى أن عام 2000 هي سنة كبيسة. استخدم Jan و Feb فقط في السنوات الكبيسة.

رقم المئات من السنين تكملة أرقام السنة المتبقية الشهر DoW #
اليوليوسي

(r ÷ 7)

الميلادي

(r ÷ 4)

r5 19 16 20 r0 00 06   17 23 28 34   45 51 56 62   73 79 84 90 Jan Oct Sa 0
r4 18 15 19 r3 01 07 12 18 29 35 40 46 57 63 68 74 85 91 96 May Su 1
r3 17 ___ 02   13 19 24 30   41 47 52 58   69 75 80 86   97 Feb Aug M 2
r2 16 18 22 r2 03 08 14   25 31 36 42   53 59 64 70   81 87 92 98 Feb Mar Nov Tu 3
r1 15 ___   09 15 20 26   37 43 48 54   65 71 76 82   93 99 Jun W 4
r0 14 17 21 r1 04 10   21 27 32 38   49 55 60 66   77 83 88 94 Sep Dec Th 5
r6 13 ___ 05 11 16 22 33 39 44 50 61 67 72 78 89 95 Jan Apr Jul F 6

لتحديد يوم الأسبوع (السبت 1 يناير 2000)

  • يوم الشهر: 1 ~ 31 (1)
  • الشهر: (6)
  • السنة: (0)
  • القرن الرابع للتقويم الميلادي والقرن السابع للتقويم اليولياني (0) .
  • إضافة 1+6+0+0=7. بقسمة العدد على 7 يبقى 0، وبذلك فإن يوم الأسبوع هو السبت.

الصيغة هي w = (d + m + y + c) mod 7.

التقويم اليولياني المنقح

لاحظ أن التاريخ (أي يوم الأسبوع) في التقويمين اليولياني والغريغوري المنقحين هو نفسه من 14 أكتوبر 1923 إلى 28 فبراير 2800 م ضمنًا، وأنه بالنسبة للسنوات الكبيرة قد يكون من الممكن طرح 6300 أو مضاعفاته قبل البدء للوصول إلى سنة تقع ضمن الجدول أو أقرب إليه.

للبحث عن يوم الأسبوع لأي تاريخ لأي عام باستخدام الجدول، اطرح 100 من السنة ثم قسّم الفرق على 100 واضرب الحاصل الناتج (مع حذف الكسور) في سبعة ثم قسّم الناتج على تسعة. لاحظ الحاصل (حذف الكسور). أدخل الجدول بالسنة اليوليانية وقبل القسمة النهائية أضف 50 واطرح الحاصل المذكور أعلاه.

مثال: ما هو يوم الأسبوع 27 يناير 8315؟

8315−6300=2015، 2015−100=1915، 1915/100=19 الباقي 15، 19×7=133، 133/9=14 الباقي 7. إن عام 2015 متقدم عن عام 1315 بـ 700 سنة، لذا تستخدم 1315. من الجدول : للمئات (13): 6. للأرقام المتبقية (15): 4. للشهر (يناير): 0. للتاريخ (27): 27. قالب:بدون لف . 73/7=10 الباقي 3. يوم الأسبوع = الثلاثاء.

حرف الدومينيكال

للعثور على الحرف الدومينيكي احسب يوم الأسبوع إما 1 يناير أو 1 أكتوبر. إذا كان يوم الأحد فإن الحرف الدومينيكي هو A، وإذا كان يوم السبت B، وبالمثل إلى الوراء عبر الأسبوع وإلى الأمام عبر الأبجدية إلى يوم الاثنين وهو G.

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

السنوات الكبيسة هي كل السنوات التي تقسم على أربعة بالضبط مع الاستثناءات التالية:

في التقويم الغريغوري: كل السنوات التي تقسم بالضبط على 100 (بخلاف تلك التي تقسم بالضبط على 400).

في التقويم اليولياني المنقح: كل السنوات التي تقسم بالضبط على 100 (بخلاف تلك التي تعطي الباقي 200 أو 600 عند القسمة على 900).

"يوم القيامة"

هذه قطعة أثرية من الرياضيات الترفيهية. انظر قاعدة يوم القيامة للحصول على توضيح.

التحقق من النتيجة

استخدم هذا الجدول للعثور على يوم الأسبوع دون أي حسابات.

فِهرِس الإثنين

A

الثلاثاء

B

الأربعاء

C

الخميس

D

الجمعة

E

السبت

F

الأحد

G

التقويم الغريغوري واليوليوسي الدائم

استخدم يناير وفبراير للسنوات الكبيسة حرف التاريخ في صف السنة للحرف في صف القرن كل أيام سي هي أيام محتملة ليوم القيامة

القرن اليوليوسي القرن الميلادي التاريخ 01

08 15 22 29

02

09 16 23 30

03

10 17 24 31

04

11 18 25

05

12 19 26

06

13 20 27

07

14 21 28

12 19 16 20 Apr Jul Jan G A B C D E F 01 07 12 18 29 35 40 46 57 63 68 74 85 91 96
13 20 Sep Dec F G A B C D E 02 13 19 24 30 41 47 52 58 69 75 80 86 97
14 21 17 21 Jun E F G A B C D 03 08 14 25 31 36 42 53 59 64 70 81 87 92 98
15 22 Feb Mar Nov D E F G A B C 09 15 20 26 37 43 48 54 65 71 76 82 93 99
16 23 18 22 Aug Feb C D E F G A B 04 10 21 27 32 38 49 55 60 66 77 83 88 94
17 24 May B C D E F G A 05 11 16 22 33 39 44 50 61 67 72 78 89 95
18 25 19 23 Jan Oct A B C D E F G 06 17 23 28 34 45 51 56 62 73 79 84 90 00
[السنة/100] القرن الميلادي 20

16

21

17

22

18

23

19

عامل القسمة مع باقي للسنة 100
القرن اليوليوسي 19

12

20

13

21

14

22

15

23

16

24

17

25

18

أمثلة:

  • للطريقة الشائعة

26 ديسمبر 1893 (جي.دي.)

ديسمبر يقع في الصف F و26 في العمود E لذا فإن حرف التاريخ هو C الموجود في الصف F والعمود E. 93 (السنة عامل قسمة 100) يقع في الصف D (صف السنة) والحرف C في صف السنة يقع في العمود G. 18 ([السنة/100] في عمود القرن الغريغوري) يقع في الصف C (صف القرن) والحرف في صف القرن والعمود G هو B لذا فإن يوم الأسبوع هو الثلاثاء.

13 أكتوبر 1307 (جيه.دي)

13 أكتوبر هو يوم F. الحرف F في صف السنة (07) يقع في العمود G. والحرف في صف القرن (13) والعمود G هو E، لذا فإن يوم الأسبوع هو الجمعة.

1 يناير 2000 (جي.دي)

يتوافق 1 يناير مع G ويتوافق G في صف السنة ( 0 0) مع F في صف القرن ( 20 ) ويتوافق F مع يوم السبت.

صيغة موجزة للطريقة: "حرف التاريخ (G) الحرف (G) في صف السنة ( 0 0) والحرف (F) في صف القرن ( 20 )، وبالنسبة لليوم يصبح الحرف (F) يوم عمل (السبت)".

طريقة حرف الأحد

بتخصيص حرف لكل يوم من أيام السنة (باستثناء 29 فبراير) في التسلسل المتكرر ABCDEFG. وتبدأ السلسلة بـ A في 1 يناير وتستمر إلى A مرة أخرى في 31 ديسمبر. حرف الأحد هو الحرف الذي يقف أمام كل أيام الأحد في السنة. نظرًا لأن يوم 29 فبراير ليس له حرف فهذا يعني أن حرف الأحد من مارس إلى ديسمبر تتراجع خطوة واحدة في التسلسل مقارنة بحرف يناير وفبراير. كما يجب العثور على الحرف الخاص بأي تاريخ حيث يلتقي الصف الذي يحتوي على الشهر (باللون الأسود) على يسار "المربع اللاتيني" مع العمود الذي يحتوي على التاريخ أعلى "المربع اللاتيني". ولنا العثور على حرف الأحد حيث يلتقي العمود الذي يحتوي على القرن (أسفل "المربع اللاتيني") مع الصف الذي يحتوي على آخر رقمين من السنة على يمين "المربع اللاتيني". وبالنسبة للسنة الكبيسة فإن حرف الأحد الموجود بهذه الطريقة هو الحرف الذي ينطبق على الفترة من مارس إلى ديسمبر.

على سبيل المثال للعثور على يوم الأسبوع 16 يونيو 2020:

العمود "20" يلتقي الصف "20" في "D". الصف "يونيو" يلتقي العمود "16" في "F". بما أن الحرف F هو حرفين بعد الحرف D، فإن يوم الأسبوع هو يومين بعد الأحد أي يوم الثلاثاء.

الخوارزميات الرياضية

قالب:ملاحظة علوية

ريت داي

تعمل طريقة ريت داي عن طريق جمع عدد الأيام قالب:Mvar التي مرت منذ تاريخ يوم معروف من أيام الأسبوع قالب:Mvar ثم يحدد يوم الأسبوع بواسطة قالب:تعبير رياضي ، بما يتوافق مع أي اتفاقية يمكن استخدامها لترميز قالب:Mvar.

على سبيل المثال تاريخ 13 أغسطس 2009 هو 733632 يومًا من 1 يناير 1م. إن أخذ الرقم لعامل القسمة 7 يعطينا 4 ومن ثم يوم الخميس.

خوارزمية جاوس

وصف كارل فريدريش جاوس طريقة لحساب يوم الأسبوع في الأول من يناير في أي عام معين في مذكرة مكتوبة بخط اليد في مجموعة من الجداول الفلكية.[٥] لكن لم يقم بنشره أبدًا. وقد قاموا بتضمينه أخيرًا في أعماله المجمعة في عام 1927.[٦] وبالمقارنة مع ريت داي تساعد النتيجة على تبسيط حساب السنوات.

كانت طريقة جاوس قابلة للتطبيق على التقويم الغريغوري. فقد قام بترقيم أيام الأسبوع من 0 إلى 6 بدءًا من يوم الأحد. وقد حدد العملية التالية:

المدخلات
رقم السنة قالب:Mvar، رقم الشهر قالب:Mvar، رقم التاريخ قالب:Mvar.
الناتج
يوم من السنة.
إجراء
  1. أولاً قم بتحديد يوم الأسبوع قالب:تعبير رياضي من 1 يناير.

قالب:تعبير رياضي بدلاً من ذلك، اضبط قالب:تعبير رياضي ، قالب:تعبير رياضي ، والقيمة هيقالب:إزاحة

قالب:تعبير رياضي

قالب:تعبير رياضي أوقالب:إزاحة قالب:تعبير رياضي .

  1. قم الآن بتحديد الإزاحة المرتبطة بالشهر قالب:Mvar باستخدام جدول البحث مع قالب:Mvar.
  2. العودة قالب:تعبير رياضي.
جدول تعويضات الأشهر
شهور يناير فبراير مارس أبريل يمكن يونيو يوليو أغسطس سبتمبر أكتوبر نوفمبر ديسمبر
سنوات مشتركة 0 3 3 6 1 4 6 2 5 0 3 5
السنوات الكبيسة 4 0 2 5 0 3 6 1 4 6
يمكن تلخيص الإجراء المذكور أعلاه في تعبير واحد للحالة الغريغورية:قالب:إزاحة

قالب:تعبير رياضي

مثال عملي

بالنسبة للسنة رقم 2000، قالب:تعبير رياضي ، قالب:تعبير رياضي و قالب:تعبير رياضي، فإن يوم الأسبوع 1 يناير هو

قالب:تعبير رياضي
قالب:تعبير رياضي
قالب:تعبير رياضي
قالب:تعبير رياضي
قالب:تعبير رياضي
قالب:تعبير رياضي

أيام الأسبوع ليوم 30 أبريل 1777 و23 فبراير 1855 هي

قالب:تعبير رياضي
قالب:تعبير رياضي
قالب:تعبير رياضي

و

قالب:تعبير رياضي
قالب:تعبير رياضي
قالب:تعبير رياضي

الشرح والملاحظات

يمكن إثبات خوارزمية يوم الأسبوع 1 يناير باستخدام الحساب النمطي. النقطة الرئيسية هي أنه نظرًا لأن قالب:تعبير رياضي فإن كل عام يضيف يومًا واحدًا إلى التقدم. والباقي هو تعديل للسنة الكبيسة. الإصدارات المستندة إلى القرن تحتوي على قالب:تعبير رياضي.

يوضح جدول إزاحات الأشهر تباعدًا في شهر فبراير بسبب السنة الكبيسة. وهناك تقنية شائعة (استخدمها زيلر لاحقًا) وهي تحويل الشهر ليبدأ بشهر مارس، بحيث يكون يوم الكبيسة في نهاية العد. وبالإضافة إلى ذلك -وكما أظهر زيلر لاحقًا- يمكن استبدال الجدول بتعبير حسابي.

كان تحويل هذه الصيغة أيضًا إلى طرق بيانية وجدولية لحساب أي يوم من أيام الأسبوع بواسطة كريتشيك وشفيردتفيغر.[٦][٧]

اختلافات متباينة

الصيغة التالية هي مثال لإصدار بدون جدول بحث. من المفترض أن يبدأ العام في شهر مارس مما يعني أنه يجب التعامل مع التواريخ في شهري يناير وفبراير على أنها جزء من العام السابق. وصيغة التقويم الغريغوري هي[٨]

w=(d+2.6m0.2+y+y4+c42c)mod7,

أين

جدول تعويضات الأشهر ( 2.6m0.2 )
شهور مارس أبريل يمكن يونيو يوليو أغسطس سبتمبر أكتوبر نوفمبر ديسمبر يناير فبراير
الإزاحة 2 5 7 10 12 15 18 20 23 25 28 31

خوارزمية زيلر

ترقم الأشهر من 3 لشهر مارس إلى 14 لشهر فبراير في خوارزمية زيلر. ومن المفترض أن تبدأ السنة في شهر مارس؛ وهذا يعني على سبيل المثال أن شهر يناير 1995 يجب أن يُعامل باعتباره الشهر الثالث عشر من عام 1994.[٩] صيغة التقويم الغريغوري هي

w(13(m+1)5+y4+c4+d+y2c)mod7 أين

  • d هو يوم الشهر (1 إلى 31)
  • m هو الشهر المحول (مارس = 3، ...يناير = 13، فبراير = 14)
  • Y هل السنة ما لم m 13 = يناير أو 14 = فبراير والتي تعتبر جزءًا من العام السابق Y=year1
  • c هو القرن الذي أعطاه c=Y/100
  • y هي السنة بالنسبة للقرن، والتي يكون إعطاؤها بواسطة y=Y100c ، أو ببساطة آخر رقمين من Y
  • w هو يوم الأسبوع (1 = الأحد،..0 = السبت)
جدول تعويضات الأشهر ( 2.6(m+1) )
شهور مارس أبريل يمكن يونيو يوليو أغسطس سبتمبر أكتوبر نوفمبر ديسمبر يناير فبراير
الإزاحة 10 13 15 18 20 23 26 28 31 33 36 39

الفرق الوحيد هو بين خوارزمية زيلر ( قالب:Mvar ) وخوارزمية غاوس المتباينة ( قالب:Mvar )، أي قالب:تعبير رياضي .

(d+(m+1)2.6+y+y/4+c/42c)mod7(d+2.6m0.2+y+y/4+c/42c)mod7
=((m+2+1)2.6(2.6m0.2))mod7 (مارس = 3 في قالب:Mvar ولكن مارس = 1 في قالب:Mvar )
=(2.6m+7.82.6m+0.2)mod7
=8mod7=1

خوارزمية وانج

خوارزمية وانج[١٠] لحساب التقويم الغريغوري بواسطة الإنسان هي (يجب طرح الصيغة بمقدار 1 إذا كان m يساوي 1 أو 2 إذا كانت السنة سنة كبيسة)w=(dd0(m)+y0y1+y0/4y1/22(cmod4))mod7, أين

  • قالب:Tmath هو الرقم الأخير من السنة (الواحدات)
  • قالب:Tmath هو الرقم الثاني والأخير من السنة (العشرات)
  • قالب:Tmath هو القرن المعطى بـ c=year/100
  • قالب:Tmath هو يوم الشهر (1 إلى 31)
  • قالب:Tmath هو الشهر (يناير=1,...,ديسمبر=12)
  • قالب:Tmath هو يوم من أيام الأسبوع (0=الأحد,...,6=السبت)
  • قالب:Tmath هي دالة الأيام الخالية (إزاحة الشهر) بالقيم المدرجة في الجدول التالي
قالب:Mvar قالب:Tmath
1 1 A day
3 5 قالب:Mvar + 2
5 7
7 9
9 3 قالب:Mvar + 1
11 12
2 12 قالب:Mvar + 3
4 2 قالب:Mvar − 2
6 4
8 6
10 8
12 10

يمكن استخلاص خوارزمية للتقويم اليولياني من الخوارزمية أعلاه w=(dd0(m)+y0y1+y0/4y1/2c)mod7, قالب:Tmath يوم القيامة.

قالب:Mvar قالب:Tmath
1 3 C day
3 7 قالب:Mvar + 4
5 9
7 11
9 5 قالب:Mvar − 4
11 7
2 0 قالب:Mvar − 2
4 4 قالب:Mvar
6 6
8 8
10 10
12 12

خوارزميات أخرى

طريقة شفيردتفيجر

في الطريقة الجدولية جزئيًا التي وضعها شفيردتفيجر تقسم السنة إلى القرن والسنة المكونة من رقمين داخل القرن. والنهج يعتمد على الشهر. بالنسبة إلى قالب:تعبير رياضي،

c=y100andg=y100c, لذلك فإن قالب:تعبير رياضي تقع بين 0 و99. بالنسبة إلى قالب:تعبير رياضي

c=y1100andg=y1100c. صيغة يوم الأسبوع هي[٦] w=(d+e+f+g+g4)mod7,

حيث لنا اختيار معامل التناسب الإيجابي.[٦]

ولنا الحصول على قيمة قالب:Mvar من الجدول التالي:

قالب:Mvar 1 2 3 4 5 6 7 8 9 10 11 12
قالب:Mvar 0 3 2 5 0 3 5 1 4 6 2 4

ثم الحصول على قيمة قالب:Mvar من الجدول التالي والذي يعتمد على التقويم. وبالنسبة للتقويم الغريغوري[٦]

قالب:تعبير رياضي 0 1 2 3
قالب:Mvar 0 5 3 1

بالنسبة للتقويم اليولياني[٦]

قالب:تعبير رياضي 0 1 2 3 4 5 6
قالب:Mvar 5 4 3 2 1 0 6

طريقة لويس كارول

قام تشارلز لوتويدج دودجسون ( لويس كارول ) بوضع طريقة تشبه اللغز ولكنها جدولية جزئيًا في استخدام نفس أرقام الفهرس للأشهر كما في "الجدول الكامل: التقويمات اليوليانية والغريغورية" أعلاه. وهو يسرد نفس التعديلات الثلاثة للأشهر الثلاثة الأولى من السنوات غير الكبيسة، وسبعة تعديلات أعلى للأشهر الأخيرة، ويقدم تعليمات غامضة للعثور على الباقي، ويجب تحديد تعديلاته للقرون باستخدام صيغ مماثلة لتلك المستخدمة في جدول القرون. مع تأكيده صراحةً على أن طريقته تعمل أيضًا مع تواريخ الطراز القديم فقد أعاد إنتاج مثاله أدناه لتحديد أن "1676 فبراير 23" هو يوم الأربعاء فقط ويعمل على التقويم اليولياني الذي يبدأ العام في يناير 1، بدلا من مارس 25 كما في التقويم اليولياني "النمط القديم".

الخوارزمية:[١١]

خذ التاريخ المحدد في الـ4 أجزاء أي عدد القرون وعدد السنوات الماضية والشهر ويوم الشهر.

احسب الـ 4 عناصر الآتية وإضافة كل منها -عند العثور عليها- إلى إجمالي العناصر السابقة. وعندما يتجاوز أحد العناصر أو الإجمالي 7 تقوم بالقسمة على 7، واحتفظ بالباقي فقط.

لعنصر القرن: لـ " الطراز القديم " (الذي انتهى في عام 2008) (سبتمبر 1752) اطرح من 18. بالنسبة لـل " الأسلوب الجديد " (الذي بدأ في عام 14 سبتمبر 1752) نقسم على 4 ونأخذ المتبقي [الفائض] من 3 ونضرب الباقي في 2.

عنصر السنة: أضف معًا عدد العشرات والباقي وعدد الـ 4 في الفائض.

عنصر الشهر: إذا بدأ أو انتهى بحرف متحرك اطرح الرقم الذي يدل على مكانه في السنة من 10. وهذا بالإضافة إلى عدد أيامه فيعطي العنصر للشهر التالي. العنصر لشهر يناير هو "0"، ولشهر فبراير أو مارس "3"، ولشهر ديسمبر "12".

بند اليوم: يجب تصحيح الإجمالي الذي كان التوصل إليه بهذه الطريقة عن طريق طرح "1" (إضافة 7 أولاً إذا كان الإجمالي "0")، أما إذا كان التاريخ هو يناير أو فبراير في سنة كبيسة -مع تذكر أن كل عام قابل للقسمة على 4 هو سنة كبيسة- باستثناء سنوات القرون فقط، وفي "النمط الجديد" عندما لا يكون عدد القرون قابلاً للقسمة بهذه الطريقة (على سبيل المثال 1800).

النتيجة النهائية تعطي يوم الأسبوع "0" يعني الأحد، "1" يعني الاثنين وهكذا.

أمثلة:[١١]

1783 سبتمبر 18

17 مقسومًا على 4 يترك "1"، 1 من 3 يعطي "2"، مرتين 2 يعطي "4". 83 هو 6 دزينات و11 مما يعطي 17، بالإضافة إلى 2 يعطي 19 أي (القسمة على 7) "5". المجموع 9 أي "2" العنصر الخاص بشهر أغسطس هو "8 من 10" أي "2"، لذلك بالنسبة لشهر سبتمبر يكون "2 زائد 31" أي "5" المجموع 7 أي "0" والذي يخرج. 18 يعطي "4". الجواب "الخميس".

1676 فبراير 23

16 من 18 يعطي "2" 76 هو 6 دزينات و 4 مما يعطي 10، زائد 1 يعطي 11 أي "4". المجموع "6" العنصر لشهر فبراير هو "3". المجموع 9 أي "2" 23 يعطي "2". مجموع "4" تصحيح للسنة الكبيسة يعطي "3". الجواب "الأربعاء".

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

ولو لاحظ أن 1676 23 فبراير (مع 25 (مارس كيوم رأس السنة الجديدة) هو في الواقع 1677 23 فبراير (مع 1 ولكن إذا كان من المفترض أن يكون أول يناير هو رأس السنة الجديدة، فإنه كان سيأخذ في الاعتبار اختلاف أرقام السنوات -تمامًا كما يختلف تاريخ ميلاد جورج واشنطن- بين التقويمين. ثم تسفر طريقته عن:

1677 (مصحح) 23 فبراير

16 من 18 يعطي "2" 77 هو 6 دزينات و 5 مما يعطي 11، زائد 1 يعطي 12 أي "5". المجموع "7" العنصر لشهر فبراير هو "3". المجموع 10 أي "3" 23 يعطي "2". المجموع "5". الجواب "الجمعة".

ومن الجدير بالذكر أن أولئك الذين أعادوا نشر طريقة كارول فشلوا في الإشارة إلى خطئه، وأبرزهم مارتن جاردنر.[١٢]

في عام 1752 تخلت الإمبراطورية البريطانية عن استخدام التقويم الجولياني القديم واعتمدت التقويم الغريغوري، والذي أصبح التقويم القياسي اليوم في معظم بلدان العالم. لمزيد من المعلومات راجع تواريخ الطراز القديم والطراز الجديد.

الأساليب في برمجة الكمبيوتر

كيث

في تعبيرات لغة السي أدناه -y و m و d هي على التوالي- متغيرات عددية صحيحة تمثل السنة (على سبيل المثال 1988) والشهر (1-12) ويوم الشهر (1-31).

(d+=m<3 ? y-- : y-2,23*m/9+d+4+y/4-y/100+y/400) % 7

في عام 1990 نشر مايكل كيث وتوم كرافر التعبير السابق الذي يسعى إلى تقليل عدد ضغطات المفاتيح اللازمة لإدخال وظيفة مستقلة لتحويل التاريخ الميلادي إلى يوم رقمي من أيام الأسبوع.[١٣] ويعود 0 = الأحد و1 = الاثنين وهكذا. ويستخدم هذا التعبير مكون شهر أقل تعقيدًا من خوارزمية زيلر.

وبعد فترة وجيزة قام هانز لاكمان بتبسيط خوارزميتهم لتسهيل الاستخدام على الأجهزة ذات المواصفات المنخفضة. وبما أن طريقته مصممة في الأصل للآلات الحاسبة ذات الوظائف الأربع، فإنها تحتاج إلى عدد أقل من إدخالات لوحة المفاتيح من طريق الحد من نطاقها إما إلى الفترة من 1905 إلى 2099 ميلادية، أو إلى التواريخ الجوليانية التاريخية. وقد عُدل لاحقًا لتحويل أي تاريخ ميلادي -حتى على العداد-. وفي الأجهزة التي تعتمد على موتورولا 68000 هناك حاجة أقل أيضًا إلى سجلات المعالج أو التعليمات البرمجية التشغيلية هذا اعتمادًا على هدف التصميم المقصود.[١٤]

أساليب ساكاموتو

يكون تجسيد السلف الجدولي لخوارزمية توندرينغ في دالة كي آند أر. سي التالية.[١٥] مع بعض التغييرات البسيطة التي قام بتكييفها للغات البرمجة عالية المستوى الأخرى مثل إيه بيه أل2 .[١٦] ونشرها توموهيكو ساكاموتو على مجموعة أخبار يوسنت كامب.لانج.سي في عام 1992 وهو دقيق لأي تاريخ ميلادي.[١٧][١٨]

dayofweek(y, m, d)	/* 1 <= m <= 12, y > 1752 (in the U.K.) */
{
  static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
  if ( m < 3 )
  {
    y -= 1;
  }
  return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}

يعود الـ 0 = الأحد والـ1 = الاثنين وهكذا. كما نشر ساكاموتو في نفس الوقت نسخة أكثر غموضًا:

dow(m,d,y) { y -= m<3; return (y+y/4-y/100+y/400+"-bed=pen+mad."[m]+d) % 7; }

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

(ومرة أخرى تشبه خوارزمية توندرينغ في بنيتها تطابق زيلر وشفرة كيث القصيرة، فيما عدا أن المكون المتعلق بالشهر هو قالب:كود. وتقع خوارزمية ساكاموتو في مكان ما بين خوارزمية غاوسي المتباينة وخوارزمية شفيردتفيغر كما ويبدو أنه غير مدرك لشكل التعبير.)

طريقة جاوس في ماتلاب

% example date input
y1 = 2022;
m1 = 1;
d1 = 1;

month_offset = [0 3 3 6 1 4 6 2 5 0 3 5]؛ % common year

% offset if y1 leap year
if mod(y1,4)==0 && mod(y1,100)==0 && mod(y1,400)==0
   month_offset=[0 3 4 0 2 5 0 3 6 1 4 6]؛ % leap year
end

% Gregor
weekday_gregor = rem( d1+month_offset(m1) + 5*rem(y1-1,4) + 4*rem(y1-1,100) + 6*rem(y1-1,400),7)

% Julian
weekday_julian = rem(6+5*rem(y1-1,4) + 3*(y1-1),7)

0: الأحد 1: الإثنين .. 6: السبت

طريقة جاوس للتقويم الغريغوري في بايثون

from numpy import remainder as rem

def is_leap_year(year: int) -> bool:
    """ Determine whether a year is a leap year. """
    return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
    
def day_of_week(y: int, m: int, d: int) ->str:
    ''' return day of week of given date as string,
    using Gauss's algorithm to find it '''
    if is_leap_year(y):
        month_offset = (0, 3, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6)[m - 1]
    else:
        month_offset = (0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5)[m - 1]        
    y -= 1
    wd = int(rem(d + month_offset + 5 * rem(y, 4) + 4 * rem(y, 100) \
             + 6 * rem(y, 400) , 7))
    
    return ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat')[wd]

انظر أيضا

المراجع

ملحوظات

الاستشهادات

قالب:مراجع

روابط خارجية

قالب:مقاييس ومعايير الوقتقالب:تقاويم وأسماء الشهورقالب:علم التسلسل الزمني قالب:شريط بوابات

  1. ١٫٠ ١٫١ قالب:استشهاد بكتاب
  2. قالب:استشهاد بويب
  3. قالب:استشهاد بكتاب (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT file.)
  4. قالب:استشهاد بكتاب
  5. ٥٫٠ ٥٫١ قالب:استشهاد بكتاب
  6. ٦٫٠ ٦٫١ ٦٫٢ ٦٫٣ ٦٫٤ ٦٫٥ قالب:استشهاد بويب
  7. قالب:استشهاد بكتاب
  8. قالب:استشهاد بكتاب
  9. قالب:استشهاد بويب
  10. قالب:استشهاد بمجلة
  11. ١١٫٠ ١١٫١ Dodgson, C.L. (لويس كارول). (1887). "To find the day of the week for any given date". Nature, 31 March 1887. Reprinted in Mapping Time, pp. 299-301.
  12. Martin Gardner. (1996). The Universe in a Handkerchief: Lewis Carroll's Mathematical Recreations, Games, Puzzles, and Word Plays, pages 24-26. Springer-Verlag.
  13. Michael Keith; Tom Craver. (1990). The ultimate perpetual calendar? Journal of Recreational Mathematics, 22:4, pp.280-282.
  14. The 4-function Calculator; The Assembly of Motorola 68000 Orphans; The Abacus. gopher://sdf.org/1/users/retroburrowers/TemporalRetrology
  15. "Day-of-week algorithm NEEDED!" news:1993Apr20.075917.16920@sm.sony.co.jp
  16. APL2 IDIOMS workspace: Date and Time Algorithms, line 15. ftp://ftp.software.ibm.com/ps/products/apl2/info/APL2IDIOMS.pdfقالب:وصلة مكسورة (2002)
  17. قالب:استشهاد بويب
  18. قالب:استشهاد بويب