Η γιαγιά σου έχει αρχίσει πρόσφατα να ενδιαφέρεται έντονα για τη λύση δυαδικών παζλ. Αν και γίνεται ολοένα και καλύτερη, κολλάει αρκετά συχνά. Όντας το εξυπηρετικό εγγόνι που είσαι, αποφασίζεις να φτιάξεις μια μικρή εφαρμογή που μπορεί να λύσει οποιοδήποτε δυαδικό παζλ. Έτσι θα μπορείς να δίνεις στη γιαγιά σου υποδείξεις για την επόμενη κίνησή της.
Η αποστολή σου είναι να λύσεις ένα δυαδικό παζλ. Κάθε δυαδικό παζλ έχει ακριβώς μία λύση, η οποία μπορεί να βρεθεί εφαρμόζοντας αυτούς τους κανόνες:
Θα σου δοθεί ένα ημιτελές παζλ ως γραμμές από μηδενικά και άσσους, με σύμβολα αντικατάστασης (_) για τις άγνωστες τιμές.
Ο στόχος είναι να ορίσεις τους κανόνες του δυαδικού παζλ, ώστε τα tests να μπορούν να βρουν τις τιμές για τα σύμβολα αντικατάστασης (δεν το κάνεις αυτό μόνος σου).
Η υλοποίησή σου πρέπει να χρησιμοποιεί το Constraint Logic Programming over Finite Domains (CLP(FD)) της Prolog, που είναι ιδανικό για τέτοιου είδους εργασίες.
Για να ξεκινήσεις, το αρχείο stub περιλαμβάνει ήδη τη βιβλιοθήκη clpfd μέσω:
:- use_module(library(clpfd)).
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Prolog με 109 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.