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

Δυαδικό παζλ

Μέτριο

Εισαγωγή

Η γιαγιά σου έχει αρχίσει πρόσφατα να ενδιαφέρεται έντονα για τη λύση δυαδικών παζλ. Αν και γίνεται ολοένα και καλύτερη, κολλάει αρκετά συχνά. Όντας το εξυπηρετικό εγγόνι που είσαι, αποφασίζεις να φτιάξεις μια μικρή εφαρμογή που μπορεί να λύσει οποιοδήποτε δυαδικό παζλ. Έτσι θα μπορείς να δίνεις στη γιαγιά σου υποδείξεις για την επόμενη κίνησή της.

Οδηγίες

Η αποστολή σου είναι να λύσεις ένα δυαδικό παζλ. Κάθε δυαδικό παζλ έχει ακριβώς μία λύση, η οποία μπορεί να βρεθεί εφαρμόζοντας αυτούς τους κανόνες:

  1. Κάθε κελί πρέπει να περιέχει είτε μηδέν είτε άσσο.
  2. Περισσότερα από δύο ίδια ψηφία δεν μπορούν να είναι γειτονικά. Έτσι, αν δύο γειτονικά κελιά περιέχουν το ίδιο ψηφίο, τα κελιά δίπλα τους πρέπει να περιέχουν το άλλο ψηφίο.
  3. Κάθε γραμμή και κάθε στήλη πρέπει να περιέχει ίσο αριθμό μηδενικών και άσσων.
  4. Κάθε γραμμή και κάθε στήλη είναι μοναδική.

Θα σου δοθεί ένα ημιτελές παζλ ως γραμμές από μηδενικά και άσσους, με σύμβολα αντικατάστασης (_) για τις άγνωστες τιμές. Ο στόχος είναι να ορίσεις τους κανόνες του δυαδικού παζλ, ώστε τα tests να μπορούν να βρουν τις τιμές για τα σύμβολα αντικατάστασης (δεν το κάνεις αυτό μόνος σου). Η υλοποίησή σου πρέπει να χρησιμοποιεί το Constraint Logic Programming over Finite Domains (CLP(FD)) της Prolog, που είναι ιδανικό για τέτοιου είδους εργασίες.

Note

Για να ξεκινήσεις, το αρχείο stub περιλαμβάνει ήδη τη βιβλιοθήκη clpfd μέσω:

:- use_module(library(clpfd)).
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Prolog Exercism

Έτοιμος να ξεκινήσεις την άσκηση Δυαδικό παζλ;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Prolog με 109 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.