Треки
/
Prolog
Prolog
/
Вправи
/
Гігасекунда
Гігасекунда

Гігасекунда

Легка

Вступ

Те, як ми вимірюємо час, досить заплутано. У хвилині 60 секунд, а в годині 60 хвилин. Це прийшло з давнього Вавилону, де число 60 було основою їхньої системи числення. У добі 24 години, у тижні 7 днів, а скільки днів у місяці? Що ж, кількість днів у місяці залежить не лише від того, який це місяць, а й від того, який тип календаря використовують у країні, де ми живемо.

А що, якби для вираження часових проміжків ми використовували лише секунди? Тоді ми могли б застосовувати префікси метричної системи, щоб записувати великі числа секунд у легших для сприйняття величинах.

  • У кулінарному рецепті може бути сказано, що брауні треба пекти в духовці дві кілосекунди (це дві тисячі секунд).
  • Можливо, ми з родиною вирушили б кудись в екзотичні краї на дві мегасекунди (це два мільйони секунд).
  • А якби ми зі своїм подружжям прожили у шлюбі тисячу мільйонів секунд, то відсвяткували б свою першу гігасекундну річницю.
Note

Якщо ми колись колонізуємо Марс чи якусь іншу планету, вимірювання часу стане ще заплутанішим. Коли хтось каже «рік», то має на увазі рік на Землі чи рік на Марсі?

Ідея цієї вправи походить із науково-фантастичного роману "A Deepness in the Sky" автора Вернора Вінґа. У ньому автор використовує метричну систему як основу для вимірювання часу.

Вказівки

Визначте дату й час через один гігасекунд після певної дати.

Гігасекунда - це тисяча мільйонів секунд. Інакше кажучи, це одиниця з девʼятьма нулями після неї.

Якби ми народилися 24 січня 2015 року о 22:00 (10:00:00pm), то 2 жовтня 2046 року о 23:46:40 (11:46:40pm) нам виповнився б один гігасекунд.

Робота з датами в Prolog

Вбудована підтримка дат у Prolog доволі елементарна. Хоча цю вправу можна розвʼязати лише вбудованими засобами Prolog, значно зручніший спосіб працювати з датами дає пакет date_time.

Встановлення пакета date_time

Якщо встановлена версія Swipl досить свіжа, пакет можна встановити командою:

swipl pack install date_time

Якщо це не спрацює, можна виконати:

swipl -g 'pack_install(date_time)'
Note

В онлайн-редакторі нічого не потрібно встановлювати вручну.

Використання пакета date_time

Додайте на початок файлу з рішенням такий код, щоб скористатися пакетом date_time:

:- use_module(library(date_time)).
Note

Порада: джерельний код пакета date_time добре задокументовано, і він стане чудовим помічником!

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Prolog Exercism

Час розпочати Гігасекунда?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Prolog, а також 109 вправ та справжнє наставництво від людей, і все це безкоштовно.