0454 - Calendar

From Bitnami MediaWiki

Cerință

Se citesc 3 numere naturale zi luna an. Să se decidă dacă reprezintă o dată calendaristică corectă, în format zi luna an.

Date de intrare

Programul citește de la tastatură numerele zi luna an.

Date de ieșire

Programul afișează pe ecran mesajul DA, dacă cele trei numere formează o dată calendaristică corectă, respectiv NU în caz contrar.

Restricții de precizări

  • 1850 ⩽ an ⩽ 2500
  • 0 ⩽ zi, luna ⩽ 100

Exemplul 1

Intrare
29
2
2000
Ieșire
Datele introduse corespund restricțiilor impuse.
DA

Exemplul 2

Intrare
29
2
2024
Ieșire
Datele introduse corespund restricțiilor impuse.
DA

Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1"> def validare_date(zi, luna, an):

   return an.isdigit() and 1850 <= int(an) <= 2500 and luna.isdigit() and 0 <= int(luna) <= 100 and zi.isdigit() and 0 <= int(zi) <= 100


def verifica_data():

   if (luna in [1, 3, 5, 7, 8, 10, 12]) and (zi <= 31):
       print("DA")
   elif (luna in [4, 6, 9, 11]) and (zi <= 30):
       print("DA")
   elif (luna == 2) and (zi <= 29) and (an % 4 == 0) and ((an % 100 != 0) or (an % 400 == 0)):
       print("DA")
   elif (luna == 2) and (zi <= 29) and (an % 4 == 0) and (an % 400 != 0):
       print("NU")
   else:
       print("NU")


if __name__ == '__main__':

   zi = input()
   luna = input()
   an = input()
   if validare_date(zi, luna, an):
       zi, luna, an = int(zi), int(luna), int(an)
       print("Datele de intrare corespund restricțiilor impuse.")
       verifica_data()
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>