Kurzusok
/
Prolog
Prolog
/
Feladatok
/
Gigaszekundum
Gigaszekundum

Gigaszekundum

Könnyű

Bevezetés

Ahogy az időt mérjük, az elég zűrzavaros. Egy percben 60 másodperc van, egy órában pedig 60 perc. Ez az ókori Babilonból ered, ahol a számrendszerük alapja a 60 volt. Egy nap 24 órából áll, egy hét 7 napból, és hány nap van egy hónapban? Nos, a hónapok hossza nemcsak attól függ, melyik hónapról van szó, hanem attól is, milyen típusú naptárt használnak abban az országban, ahol élsz.

Mi lenne, ha ehelyett csak másodpercekkel fejeznénk ki az időtartamokat? Akkor a metrikus rendszer előtagjait használhatnánk, hogy a nagy másodpercszámokat könnyebben átlátható mennyiségekként írjuk le.

  • Egy ételrecept előírhatja, hogy a brownie-t két kilomásodpercig (azaz kétezer másodpercig) kell a sütőben sütni.
  • Lehet, hogy a családoddal egy egzotikus helyre utaznál két megamásodpercre (azaz kétmillió másodpercre).
  • És ha a házastársaddal ezer millió másodpercig lennétek házasok, akkor ünnepelnéd az egygigamásodperces évfordulódat.
Note

Ha egyszer kolonizáljuk a Marsot vagy valamely más bolygót, az idő mérése még zűrzavarosabb lesz. Ha valaki azt mondja, „év”, akkor egy földi évre gondol, vagy egy marsi évre?

Ennek a feladatnak az ötlete Vernor Vinge író „A Deepness in the Sky” című sci-fi regényéből származik. A regényben a szerző a metrikus rendszert használja az időmérés alapjaként.

Utasítások

A feladatod, hogy meghatározd, milyen dátum és időpont lesz egy adott dátum után egy gigaszekundummal.

Egy gigaszekundum egymilliárd másodperc. Ez egy egyes, utána kilenc nulla.

Ha 2015. január 24-én 22:00-kor (du. 10:00:00) születtél volna, akkor 2046. október 2-án 23:46:40-kor (du. 11:46:40) épp egy gigaszekundumos lennél.

Dátumok kezelése Prologban

A Prolog beépített támogatása a dátumokhoz meglehetősen kezdetleges. Bár ezt a feladatot pusztán a Prolog beépített eszközeivel is meg tudod oldani, a dátumok kezelésére sokkal kényelmesebb megoldás a date_time csomag.

A date_time csomag telepítése

Ha a telepített Swipl verziód meglehetősen friss, a csomagot a következő parancs futtatásával telepítheted:

swipl pack install date_time

Ha ez nem működik, ezt futtathatod:

swipl -g 'pack_install(date_time)'
Note

Ha az online szerkesztőt használod, semmit sem kell kézzel telepítened.

A date_time csomag használata

Írd a következő kódot a megoldásfájlod elejére, hogy használhasd a date_time csomagot:

:- use_module(library(date_time)).
Note

Tipp: a date_time csomag forráskódja jól dokumentált, és nagy segítségedre lehet!

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Prolog Exercism

Készen állsz elkezdeni a(z) Gigaszekundum feladatot?

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.