MASTER DSBD 2021/2022 Module : Intelligence artificielle Nom et prénom : MEFTAH

MASTER DSBD 2021/2022 Module : Intelligence artificielle Nom et prénom : MEFTAHI Jamil -Définissons le prédicat reines(N,L) où L représente la liste des ordonnées de N reines placées sur un échiquier (N×N) de telle manière qu’elles ne s’attaquent pas mutuellement : -Solution : reines(N,L):- genere_liste(N,L), placer_reines(N,L,_,_). genere_liste(0,[]). genere_liste(N,[_|Li]):-N>0, M is N- 1,genere_liste(M,Li). placer_reine(I,[I|_],[I|_],[I|_]). placer_reine(I,[_|AD],[_|D],[_|Ds]):- placer_reine(I,AD,D,Ds). placer_reines(0,_,_,_). placer_reines(I,AD,D,[_|Ds]):-I>0, J is I- 1,placer_reines(J,AD,[_|D],Ds),placer_reine(I,AD,D, Ds). -Explication des variables/prédicats : Variables : -N, M : taille de l’échiquier -I, J : numéro de la ligne sur laquelle se trouve la reine actuelle. -L, Li : Liste de longueur N utilisée pour représenter la solution. -Cs : Colonne sous forme de liste de champs de longueur N. -D : Diagonale sous forme de liste ouverte de champs -AD : Antidiagonale sous forme de liste ouverte de champs Prédicats : • placer_reine(Reines,Colonne,Diagonale,AntiDiagonale): remplir la colonne I quelque part dans la liste. il obtient toujours la liste complète des positions de la reine [R1, R2, R3, R4] et des parties de la liste des diagonales et des antidiagonales • placer_reines fait deux choses : - Dérouler une liste de diagonales [U1, U2, U3, U4|_] et de antidiagonales [D1, D2, D3, D4|_] ; et - Appeler placer_reine avec une valeur spécifique, et certaines parties de la liste des hauts et des bas. • genere_liste: générer une liste de variables de longueur N. -Exécution : -Exécution avec (trace) : uploads/s3/ rapport-devoir-prolog.pdf

  • 17
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager