Z21591

{
    "Z1K1": "Z2",
    "Z2K1": {
        "Z1K1": "Z6",
        "Z6K1": "Z21591"
    },
    "Z2K2": {
        "Z1K1": "Z14",
        "Z14K1": "Z21590",
        "Z14K3": {
            "Z1K1": "Z16",
            "Z16K1": "Z610",
            "Z16K2": "def Z21590(Z21590K1):\r\n    import datetime\r\n\r\n    # Convert integer to Roman numeral\r\n    def intToRoman(n):\r\n        if 1 \u003C= n \u003C= 3999:\r\n            m = [\"\", \"M\", \"MM\", \"MMM\"]\r\n            c = [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\"]\r\n            x = [\"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\"]\r\n            i = [\"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"]\r\n            return m[n // 1000] + c[(n % 1000) // 100] + x[(n % 100) // 10] + i[n % 10]\r\n        return \"\"\r\n\r\n    # Days of the week\r\n    dayOptions = (\"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\", \"Pazar\")\r\n\r\n    # Function to add the correct Turkish ordinal suffix\r\n    def s(number):\r\n        suffixes = {1: \"'inci\", 5: \"'inci\", 8: \"'inci\",\r\n                    2: \"'nci\", 7: \"'nci\",\r\n                    3: \"'üncü\", 4: \"'üncü\",\r\n                    6: \"'ncı\", 9: \"'uncu\",\r\n                    0: \"'ıncı\"}  # Added suffix for 0\r\n        return str(number) + suffixes.get(number % 10, \"'ıncı\")\r\n\r\n    Z21590K2 = Z21590K1  # Keeping the original logic\r\n\r\n    # Handling AD (Milattan Sonra) years\r\n    if Z21590K1 \u003E 0:\r\n        # Safe weekday calculation for AD years\r\n        day = datetime.datetime(1600 + Z21590K1 % 400, 1, 1).weekday()\r\n        leap = (Z21590K2 % 4 == 0 and (Z21590K2 % 100 != 0 or Z21590K2 % 400 == 0))\r\n\r\n        firstPart = f\"{Z21590K2} ({intToRoman(Z21590K2)}), Miladi Takvime göre {dayOptions[day]} günüyle başlayan, {'artık' if leap else 'artık yıl olmayan'} bir yıl.\"\r\n        secondPart = (f\"Milattan sonra {s(Z21590K2 // 1000 + 1)} binyılın {s(Z21590K2 % 1000)} yılı, \"\r\n                      f\"{s(Z21590K2 // 100 + 1)} yüzyılının {s(Z21590K2 % 100)} yılı ve \"\r\n                      f\"{(Z21590K2 // 10) * 10} onyılının {s(Z21590K2 % 10 + 1)} yılı.\")\r\n\r\n    # Handling BC (Milattan Önce) years\r\n    else:\r\n        yearBC = abs(Z21590K2)\r\n        day = 0  # Default to Pazartesi since datetime can't handle BC years\r\n        leap = False  # Leap years are not meaningful for BC\r\n\r\n        firstPart = f\"{yearBC} Miladi Takvime göre {dayOptions[day]} günüyle başlayan, artık yıl olmayan bir yıl.\"\r\n        secondPart = (f\"Milattan önce {s(yearBC // 1000 + 1)} binyılın {s(yearBC % 1000)} yılı, \"\r\n                      f\"milattan önce {s(yearBC // 100 + 1)} yüzyılın {s(yearBC % 100)} yılı ve \"\r\n                      f\"milattan önceki {(yearBC // 10) * 10} onyılın {s(yearBC % 10 + 1)} yılı.\")\r\n\r\n    return firstPart + \" \" + secondPart\r\n"
        }
    },
    "Z2K3": {
        "Z1K1": "Z12",
        "Z12K1": [
            "Z11",
            {
                "Z1K1": "Z11",
                "Z11K1": "Z1002",
                "Z11K2": "Intro for year in Turkish, Python"
            }
        ]
    },
    "Z2K4": {
        "Z1K1": "Z32",
        "Z32K1": [
            "Z31"
        ]
    },
    "Z2K5": {
        "Z1K1": "Z12",
        "Z12K1": [
            "Z11"
        ]
    }
}