Doomsday Algorithm: Fix leap year check (#12396)

* Fix leap year check

Replace `!=` in `(year % 400) != 0` (line 49) with `==`

Justification: Years that are divisible by 100 (centurian == 100) but not by 400 (year % 400 != 0) are skipped and NOT leap year.

* Update parentheses

Correct the parentheses to make clear the precedence of the conditional check

* Update other/doomsday.py

Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>

---------

Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
This commit is contained in:
Nguyen Thi Thanh Minh 2025-01-18 10:07:44 +07:00 committed by GitHub
parent 0040ad47f9
commit 533767ff46
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -46,7 +46,7 @@ def get_week_day(year: int, month: int, day: int) -> str:
) % 7 ) % 7
day_anchor = ( day_anchor = (
DOOMSDAY_NOT_LEAP[month - 1] DOOMSDAY_NOT_LEAP[month - 1]
if (year % 4 != 0) or (centurian == 0 and (year % 400) == 0) if year % 4 != 0 or (centurian == 0 and year % 400 != 0)
else DOOMSDAY_LEAP[month - 1] else DOOMSDAY_LEAP[month - 1]
) )
week_day = (dooms_day + day - day_anchor) % 7 week_day = (dooms_day + day - day_anchor) % 7