Διαδρομές
/
Prolog
Prolog
/
Ασκήσεις
/
Γιγαδευτερόλεπτο
Γιγαδευτερόλεπτο

Γιγαδευτερόλεπτο

Εύκολο

Εισαγωγή

Ο τρόπος που μετράμε τον χρόνο είναι λίγο μπερδεμένος. Έχουμε 60 δευτερόλεπτα στο λεπτό και 60 λεπτά στην ώρα. Αυτό προέρχεται από την αρχαία Βαβυλώνα, όπου χρησιμοποιούσαν το 60 ως βάση του αριθμητικού τους συστήματος. Μια μέρα έχει 24 ώρες, μια εβδομάδα έχει 7 μέρες, και πόσες μέρες έχει ένας μήνας; Λοιπόν, ο αριθμός των ημερών σε έναν μήνα δεν εξαρτάται μόνο από το ποιος μήνας είναι, αλλά και από το είδος του ημερολογίου που χρησιμοποιείται στη χώρα όπου ζεις.

Τι θα γινόταν όμως αν χρησιμοποιούσαμε μόνο δευτερόλεπτα για να εκφράζουμε χρονικά διαστήματα; Τότε θα μπορούσαμε να χρησιμοποιήσουμε τα προθέματα του μετρικού συστήματος για να γράφουμε μεγάλους αριθμούς δευτερολέπτων σε ποσότητες πιο εύκολα κατανοητές.

  • Μια συνταγή μπορεί να σου πει να αφήσεις τα μπράουνις να ψηθούν στον φούρνο για δύο κιλοδευτερόλεπτα (δηλαδή δύο χιλιάδες δευτερόλεπτα).
  • Ίσως εσύ και η οικογένειά σου να ταξιδεύατε κάπου εξωτικά για δύο μεγαδευτερόλεπτα (δηλαδή δύο εκατομμύρια δευτερόλεπτα).
  • Και αν εσύ και ο σύντροφός σου ήσασταν παντρεμένοι για χίλια εκατομμύρια δευτερόλεπτα, θα γιορτάζατε την επέτειό σας του ενός γιγαδευτερολέπτου.
Note

Αν ποτέ αποικίσουμε τον Άρη ή κάποιον άλλο πλανήτη, η μέτρηση του χρόνου θα γίνει ακόμα πιο μπερδεμένη. Αν κάποιος πει "έτος", εννοεί ένα έτος στη Γη ή ένα έτος στον Άρη;

Η ιδέα για αυτή την άσκηση προήλθε από το μυθιστόρημα επιστημονικής φαντασίας "A Deepness in the Sky" του συγγραφέα Vernor Vinge. Σε αυτό, ο συγγραφέας χρησιμοποιεί το μετρικό σύστημα ως βάση για τις μετρήσεις του χρόνου.

Οδηγίες

Η αποστολή σου είναι να προσδιορίσεις την ημερομηνία και την ώρα ένα γιγαδευτερόλεπτο μετά από μια δεδομένη ημερομηνία.

Ένα γιγαδευτερόλεπτο είναι ένα δισεκατομμύριο δευτερόλεπτα. Δηλαδή ένα 1 με εννέα μηδενικά μετά.

Αν γεννήθηκες στις 24 Ιανουαρίου 2015 στις 22:00 (10:00:00 μ.μ.), τότε θα είχες ζήσει ένα γιγαδευτερόλεπτο στις 2 Οκτωβρίου 2046 στις 23:46:40 (11:46:40 μ.μ.).

Εργασία με ημερομηνίες στην 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 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.