Щомісяця наш партнер зустрічається зі своїм найкращим другом. У них обох дуже щільний графік, тож знайти слушну дату непросто! А оскільки графік щільний і в нас, партнер завжди уточнює можливі дати зустрічі з нами:
Під час дзвінка цього місяця партнер запитує нас:
Спантеличені, ми питаємо, що таке надцятий день. Партнер пояснює, що надцятий день - це вигадане поняття, яке означає дні місяця, що закінчуються на «-надцяте»:
Оскільки днів тижня теж сім, кожен день тижня гарантовано має рівно один надцятий день щомісяця.
Тепер, коли ми розуміємо, що таке надцятий день, ми перевіряємо свій календар. На надцятий четвер у нас нічого не заплановано, тож ми радо підтверджуємо дату партнерові.
Знайдіть точну дату зустрічі, знаючи місяць, рік, день тижня та тиждень.
Є шість значень тижня: first, second, third, fourth, last, teenth.
Наприклад, може знадобитися знайти дату зустрічі на перший понеділок січня 2018 року (1 січня 2018 року).
Так само може знадобитися знайти:
Тиждень teenth означає сім днів у місяці, які закінчуються на «-teenth» (13th, 14th, 15th, 16th, 17th, 18th і 19th).
Якщо треба знайти teenth-суботу серпня 1953 року, подивімося на його календар:
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
Звідси бачимо, що teenth-субота припадає на 15 серпня 1953 року.
У цій вправі нам знадобляться вбудовані функції Lua os.date та os.time.
os.time(tbl) перетворює таблицю, що містить «специфікацію дати й часу», на ціле число.
Аргумент - таблиця, що містить ключі «year», «month» і «day», а також, за потреби, «hour», «min», «sec» і «isdst».
os.date(format, time) перетворює цілочисельне значення часу на форматований рядок тексту (англ. string).
Опис рядка формату наведено на man-сторінці strftime(3).
Зареєструйтеся на Exercism, щоб вивчати й опановувати MoonScript, а також 126 вправ та справжнє наставництво від людей, і все це безкоштовно.