Προς το περιεχόμενο

prolog


triggerman

Προτεινόμενες αναρτήσεις

  • 2 μήνες μετά...
Δημοσ.

Prolog ξέρω από το 1986 περίπου, και την δίδαξα σε φοιτητές (σε ιδιαίτερα μαθήματα το 2005). Αν υπάρξει ενδιαφέρον ξανακάνω ευχαρίστως το ίδιο και τώρα. Κατά τη διάρκεια των μαθημάτων βελτιώθηκε και μία δική μου έκδοση

της γλώσσας, η GIS-Prolog:

http://www.omadeon.com/gis_prolog

 

Χθες έφτιαξα κι ένα νέο blog με θέματα προγραμματισμού σε Prolog (και Assembler - που χρησιμοποιώ εξίσου):

http://prologsource.wordpress.com

 

Μερικά πολύ δημοφιλή (στο διεθνές κοινό) 2 άρθα για Prolog υπάρχουν και στο άλλο blog μου, όπου τα βρίσκετε με το σύνδεσμο

http://omadeon.wordpress.com/category/prolog/

 

Πρακτικές χρήσεις της γλώσσας δίνονται και στο

http://www.omadeon.com/sourcecode

 

Ελπίζω ότι δεν σας... κούφανα. πάντως είμαι πλακατζής και σεμνός, καθόλου ξιπασμένος! :)

(χεχε...άλλωστε τα επιτεύγματα αυτά στην Ελλάδα είναι μηδαμινά σε αξία - σχεδόν - και δεν αμοίβονται παρά με ελάχιστα). :)

  • 8 μήνες μετά...
Δημοσ.

Μηπως εχει καποιος τον κωδικα για το προβλημα των 8 βασιλισσων?Εχω βρει κατι εγω αλλα δεν ξερων αν ειναι το σωστο.

 

Ευχαριστω

Δημοσ.

Έχω πολλά βιβλία σχετικά με prolog και lisp σε ηλεκτρονική μορφή. Αν θέλεις στείλε πμ να σου τα στείλω.

Δημοσ.

Ξερει κανεις μηπως πως κανει κανεις compile και πως δημιουργει ενα εκτελεσιμο αρχειο απο ενα αρχειο πηγαιου κωδικα Prolog?Εχω βρει δηλαδη ενα αρχειο queens.pl το οποιο ειναι σε Prolog και εχω κατεβασει και το gnu-prolog αλλα δεν ξερω πως να το τρεξω.

 

Ευχαριστω

Δημοσ.
Ξερει κανεις μηπως πως κανει κανεις compile και πως δημιουργει ενα εκτελεσιμο αρχειο απο ενα αρχειο πηγαιου κωδικα Prolog?Εχω βρει δηλαδη ενα αρχειο queens.pl το οποιο ειναι σε Prolog και εχω κατεβασει και το gnu-prolog αλλα δεν ξερω πως να το τρεξω.

 

Ευχαριστω

 

Αν και δεν έχω χρησιμοποιήσει gnu-prolog, η prolog στις περισσότερες υλοποιήσεις της είναι interpreted. Αυτό σημαίνει ότι δεν κάνεις compile το .pl. Αντ' αυτού το φορτώνεις στον interpreter και αυτός το τρέχει.

Η φόρτωση του αρχείου γίνεται νομίζω με την εντολή

>consult('foo.pl').

Δημοσ.

γενικα, φτιαχνεις ενα προγραμμα σε καποια αλλη γλωσσα (C, Java, Delphi) που μπορει να συνδεθει με (χρησιμοποιησει) το προγραμμα της prolog που εκανες.

Το πως γινεται αυτο ειναι αναλογα την prolog που χρησιμοποιεις. Κοιτα τις οδηγιες της....

Δημοσ.
Για να τρέξεις Prolog σε Windows κατεβάζεις πρώτα SWI-Prolog εγκαθηστάς και ΜΕΤΑ SWI-Prolog Editor

 

Προφανώς και δεν είναι απαραίτητο να χρησιμοποιήσεις τη SWI-Prolog για να τρέξεις Prolog σε Windows. Υπάρχουν πολλές άλλες υλοποιήσεις. Μια από αυτές είναι και η GNU Prolog, η οποία έχει έκδοση και για Windows.

Πάντως, η SWI-Prolog είναι πράγματι μια από τις πιο συνηθισμένες και εύχρηστες επιλογές.

  • 3 εβδομάδες αργότερα...
Δημοσ.

Μηπως θα μπορουσε κανεις να εξηγησει(οχι αναλυτικα) τι κανει η καθε εντολη στο παρακατω προγραμμα?Ευχαριστω

%*******************************************************************

% The Eight-Queens Problem

%

% A board of eight queens with each of them placed in a raw

% such that no two of them are in the same collumn, or in the same

% diagonal (if they are, they will attack each other)

 

% We use a list to represent the board positions and how queens are

% placed on the board. The ith queen (in the ith raw) in the jth

% collumn will be represented by placing integer i as the jth element

% in the list. For example, [1,4,2,5,3,8,6,7] represents the locations

% of the queens as:

% the first queen is at the board position (1.1);

% the second queen is at the board position (2.4);

% the third queen is at the board position (3.2), etc.

 

 

solution(Board) :-

permutation([1,2,3,4,5,6,7,8], Board), safe(Board).

 

permutation([], []).

permutation([A|M], N) :-

permutation(M, N1),

insert(A, N1, N).

 

insert(A, L, [A|L]).

insert(A, [b|L], [b|L1]) :- insert(A, L, L1).

 

safe([Q]).

safe([Q|List]) :- nodiag(Q, List, 1), safe(List).

 

nodiag(Q, [], Dist).

nodiag(Q1, [Q2|List], Dist) :-

noattack(Q1, Q2, Dist),

NewDist is Dist + 1,

nodiag(Q1, List, NewDist).

 

noattack(Q1, Q2, Dist) :-

Q2 - Q1 =\= Dist, Q1 - Q2 =\= Dist.

 

% could use the builtin function abs(X) -- absolute value of X:

% abs(Q2-Q1) =\= Dist

 

 

 

% To generalize the solution to the N-queens problem, we can define

% queens(+N,-S) where N is a positive integer and S should be bound to

% a solution of the the N-queens problem.

 

queens(N,S) :- gen_list(N,L), permutation(L, S), safe(S).

gen_list(1, [1]).

gen_list(N, L) :- N1 is N -1, gen_list(N1, L1), append(L1,[N],L).

 

 

 

%*******************************************************************

% I use the following to save typing a long string for loading

% this file -- once it's loaded first time, I will type l. to load

% it again after changes are made.

Δημοσ.

ολες?

 

δεν καταλαβες καμια?

 

ΥΓ δε σημαινει πως τις ξερω, πρεπει να κατσω να τις μελετησω για να σου εξηγησω τι γινετε. Οποτε αν θες να συγκεκριμενοποιησεις λιιιιιγο τις αποριες σου, καλο θα ειναι

  • 1 χρόνο αργότερα...
Δημοσ.

Γία σας παιδιά έχω μία σχετικα μεγάλη συλλογή απο πληροφορίες για 4 προορισμούς.Μήπος μπορεί κάποιος να με βοηθήση με την ομαδοποίηση αυτών ?

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...