g1org0s Δημοσ. 6 Απριλίου 2008 Δημοσ. 6 Απριλίου 2008 Μήπως θα μπορούσε κάποιος να μου εξηγήσει τη σημαίνουν τα πιο κάτω κατηγορήματα στην prolog Πρώτο κατηγόρημα: xromata([Kombos-Xroma|Rest]):- xromata(Rest), member(Xroma, [mauro,leuko,prasino,portokali]), \+ (member(Kombos1-Xroma, Rest), neighbour(Kombos,Kombos1)). Δεύτερο κατηγόρημα: neighbour(Kombos,Kombos1):- ngb(Kombos, Neighbours), member(Kombos1, Neighbours). Τρίτο κατηγόρημα: member(X, [X|_]). member(X, [_|T]):- member(X, T). Θα ήθελα να μου πείτε τι κάνει το κάθε ένα και τι σημαίνει η κάθε μια εντολή. Ευχαριστώ!!!
georgemarios Δημοσ. 7 Απριλίου 2008 Δημοσ. 7 Απριλίου 2008 για το 3ο member(X, Y) ελεχγει αν το στοιχειο Χ ανηκει στη λιστα Υ (ή αναλογα πως θα κανεις το query, μπορει να σου επιστρεψει ενα-ενα τα στοιχεια της Υ) το εξηγεί εδω αναλυτικα για το 2ο τι ειναι το ngb? για το 3ο θελει ψαξιμο και δεν εχω διαθεσιμη καποια prolog να το τρεξω. Μπορεις να μου δωσεις καποιο hint?
ptomahawk Δημοσ. 7 Απριλίου 2008 Δημοσ. 7 Απριλίου 2008 member(X, [X|_]). το [X|_] και γενικά όταν βλέπεις το [x|y] σημαίνει ότι χωρίζει ένα στοιχείο Μ που θα του δώσεις σε δύο μέρη το χ που είναι η κεφαλή(δλδ το πρώτο στοιχείο της λίστα Μ) και το y που είναι λίστα. μετά μπορείς να χωρήσεις και πάλι την λίστα y κάνοντας ένα κατηγόρημα που θα δίνεις την y και θα χωρίζει το πρώτο στοιχείο της(κεφαλή) και το υπόλοιπο σώμα της. Οι κάτω παύλα (_) σημαίνει ότι δεν μας ενδιαφέρει στο συγκεκριμένο κατηγόρημα τι είναι αυτό που θα ήταν στη θέση του _, πχ θα μπορούσες να έχεις member(X,[X|Y]) αλλά αν δεν σε ενδιαφέρει το Y τότε μπορείς να γράψεις member(X, [X|_]). Αυτά θυμάμαι τουλάχιστον.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.