Files
wehub-resource-sync dde272c4b8
i18n - Build Validation / Validate i18n Builds (24) (push) Has been cancelled
CI - Node.js / Lint (24) (push) Has been cancelled
CI - Node.js / Build (24) (push) Has been cancelled
CI - Node.js / Test (24) (push) Has been cancelled
CI - Node.js / Test - Upcoming Changes (24) (push) Has been cancelled
CI - Node.js / Test - i18n (italian, 24) (push) Has been cancelled
CI - Node.js / Test - i18n (portuguese, 24) (push) Has been cancelled
CD - Docker - GHCR Images / Build and Push Images (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:55:53 +08:00

1.8 KiB

id, title, challengeType, dashedName
id title challengeType dashedName
69b1028d6e265413d0198a2b Challenge 232: Due Date 29 challenge-232

--description--

Given a date string, return the date 9 months in the future.

  • The given and return strings have the format "YYYY-MM-DD".
  • If the month nine months into the future doesn't contain the original day number, return the last day of that month.

--hints--

get_due_date("2025-03-30") should return "2025-12-30".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(get_due_date("2025-03-30"), "2025-12-30")`)
}})

get_due_date("2025-04-27") should return "2026-01-27".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(get_due_date("2025-04-27"), "2026-01-27")`)
}})

get_due_date("2025-05-29") should return "2026-02-28".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(get_due_date("2025-05-29"), "2026-02-28")`)
}})

get_due_date("2026-06-30") should return "2027-03-30".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(get_due_date("2026-06-30"), "2027-03-30")`)
}})

get_due_date("2026-10-11") should return "2027-07-11".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(get_due_date("2026-10-11"), "2027-07-11")`)
}})

--seed--

--seed-contents--

def get_due_date(date_str):

    return date_str

--solutions--

import calendar

def get_due_date(date_str):
    year, month, day = map(int, date_str.split("-"))

    month += 9
    year += (month - 1) // 12
    month = (month - 1) % 12 + 1

    days_in_month = calendar.monthrange(year, month)[1]

    if day > days_in_month:
        day = days_in_month

    return f"{year}-{month:02d}-{day:02d}"