A párod minden hónapban találkozik a legjobb barátjával. Mindkettejüknek nagyon zsúfolt a naptára, így nehéz megtalálni a megfelelő dátumot! Mivel neked is zsúfolt a naptárad, a párod mindig egyeztet veled a lehetséges találkozódátumokról:
A havi telefonhívásotokban a párod ezt a kérdést tette fel neked:
Zavartan megkérdezed, mi az a „teenth” nap. A párod elmagyarázza, hogy a teenth nap, egy általa kitalált fogalom, azokra a napokra utal egy hónapban, amelyek angolul a „-teenth” végződésre végződnek:
Mivel a hétnek is hét napja van, garantált, hogy a hét minden napjára pontosan egy teenth nap esik minden hónapban.
Most, hogy érted a teenth nap fogalmát, megnézed a naptáradat. A teenth csütörtökön nincs semmi tervezett programod, így boldogan megerősíted a dátumot a pároddal.
A feladatod, hogy megtaláld egy találkozó pontos dátumát, adott hónap, év, hét napja és hét alapján.
Hat hétértéket kell figyelembe venni: first, second, third, fourth, last, teenth.
Például megkérhetnek, hogy keresd meg a találkozó dátumát 2018 januárjának első hétfőjén (2018. január 1.).
Hasonlóképpen megkérhetnek, hogy keresd meg:
A teenth hét arra a hét napra utal egy hónapban, amelyek „-teenth”-re végződnek (13., 14., 15., 16., 17., 18. és 19.).
Ha megkérnek, hogy keresd meg 1953 augusztusának teenth szombatját, megnézzük a naptárát:
August 1953
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Ebből megállapítjuk, hogy a teenth szombat 1953. augusztus 15.
A Prolog beépített támogatása a dátumokhoz meglehetősen kezdetleges. Sokkal kellemesebb módja a dátumokkal való munkának a [date_time package][date_time-package] használata.
Ha a telepített Swipl-verziód elég friss, a csomagot így telepítheted:
swipl pack install date_time
Ha ez nem működik, próbáld ezt:
swipl -g 'pack_install(date_time)'
Ha az online szerkesztőt használod, semmit nem kell kézzel telepítened.
Ha használni szeretnéd a date_time csomagot, írd be a következő kódot a megoldásfájlod elejére:
:- use_module(library(date_time)).
Tipp: a [date_time csomag forrása][https://www.swi-prolog.org/pack/file_details/date_time/prolog/date_time.pl?show=src] jól dokumentált, és nagy segítségedre lehet!
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Prolog nyelvet 109 feladat segítségével, valódi emberi mentorálással, mindez ingyen.