Ο καλύτερός σου φίλος παντρεύεται και σου ζήτησε να αναλάβεις τη διοργάνωση του γάμου του. Δέχτηκες, αν και το μόνο που ξέρεις γι' αυτό το προηγούμενο είναι από μια ταινία... Όλα κυλούσαν ομαλά, ώσπου άρχισες να δουλεύεις τη διάταξη των θέσεων στο τραπέζι.
Πέντε καλεσμένοι θα παρευρεθούν, καθισμένοι γύρω από ένα μεγάλο, στρογγυλό τραπέζι. Ορίστε η λίστα των καλεσμένων:
Ο στόχος σου είναι να βρεις μια διάταξη θέσεων όπου όλοι θα είναι ευχαριστημένοι με τους διπλανούς τους. Δεν ξέρεις όλους όσο καλά θα ήθελες, αλλά να τι ξέρεις:
Όσοι συμπαθιούνται μπορούν να καθίσουν ο ένας δίπλα στον άλλο, αλλά μόνο όταν το νιώθουν και οι δύο. Τα ομιλητικά άτομα συνεννοούνται εύκολα και μπορούν να καθίσουν δίπλα σε οποιονδήποτε.
Με αυτές τις λεπτομέρειες στο χέρι, ήρθε η ώρα να σχεδιάσεις τη διάταξη των θέσεων!
Η αποστολή σου είναι να βρεις την τέλεια διάταξη θέσεων στο τραπέζι. Θα το κάνεις αυτό δηλώνοντας γεγονότα (πράγματα που είναι πάντα αληθή) και κανόνες (πράγματα που είναι αληθή υπό προϋποθέσεις).
Όρισε το γεγονός chatty ώστε να αναπαριστά τα άτομα που μιλάνε πολύ.
Το γεγονός chatty παίρνει ένα μόνο όρισμα: το πεζό όνομα του ατόμου που μιλάει πολύ.
chatty(gustavo).
true.
Όρισε το γεγονός likes ώστε να αναπαριστά ποιος συμπαθεί ποιον.
Το γεγονός likes παίρνει δύο ορίσματα:
likes(esteban, malena).
true.
Όρισε τον κανόνα pairing ώστε να είναι αληθής όταν και τα δύο άτομα συμπαθούν το ένα το άλλο.
Ο κανόνας pairing παίρνει δύο ορίσματα:
pairing(malena, esteban).
true.
Όρισε τον κανόνα pairing ώστε να είναι αληθής όταν (τουλάχιστον) ένα από τα δύο άτομα που ταιριάζουν μιλάει πολύ.
pairing(valeria, jaime).
true.
Όρισε τον κανόνα seating ώστε να είναι αληθής όταν και τα πέντε ζευγάρια είναι καλά ταιριάσματα.
Ο κανόνας pairing παίρνει πέντε ορίσματα:
Χρησιμοποίησε τα γεγονότα και τους κανόνες που μόλις όρισες για να ελέγξεις τη διάταξη θέσεων.
seating(esteban, jaime, gustavo, malena, valeria).
false.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Prolog με 109 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.