SVP je suis débutante en prolog qui peut m'aider pour écrire ce prédicat :c Urgent SVP
Définir un prédicat debut/3, tel que debut(L1,N,L2) est vrai si L2 contient les N premiers éléments de L1.
SVP je suis débutante en prolog qui peut m'aider pour écrire ce prédicat :c Urgent SVP
Définir un prédicat debut/3, tel que debut(L1,N,L2) est vrai si L2 contient les N premiers éléments de L1.
Tu dois avoir eu un cours de Prolog tout de même.
Comment est définie une liste en Prolog ?
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
mais je suis très en retard c pour ça que je demander l'aide:
j'ai écrit ce prédicat en prolog :
debut(L,X) :-append(X,[_], L),!.
debut(L,Y) :-append([_],T,L),debut(T,Y).
mai il ne donne pas ce que je voulu
si quelqu’un peut m'aider ça sera gentil![]()
Très mauvaise excuse !!
Dans le cours, il y a du avoir une explication sur le parcours des listes non ?
Eh bien il faut compter le nombre de fois qu'on progresse dans la liste, à chaque on décrémente ou incrémente un compteur et quand on est arrivé à la bonne valeur (0 ou N) alors on identifie la valeur courante d'un accumulateur avec le résultat final attendu !
Il existe une autre méthode un peu plus compliquée.
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Bon alors c'est mon jour de bonte !
La définition d'une liste en Prolog est celle-ci
L = [T | Q], ou T est le premier élément de la liste, et Q le reste de la liste, Q donc une liste (de la forme [A | B]) ou la liste vide (donc []).
A partir de cela, si on écrit [T|Q] on a accès au premier élément de la liste.
On veut les N premiers éléments de la liste, on introduit un compteur dans notre prédicat
Maintenant, quand doit-on s'arréter ? Lorsque N est égal à 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 % [T|Q] est la liste dont on veut les N premiers éléments % R est le résultat n_premiers([T|Q], N, R) :- % on va aller chercher les N-1 premiers éléments de Q % il faut que N soit plus grand que 0 N > 0, N1 is N-1, % on les aura avec le même predicat (appel récursif) n_premiers(Q, N1, R1), % maintenant on construit la liste résultat R % en mettant en T devant R1 R = [T|R1].
Si on veut 0 élément, quelque soit la liste fournie, on obtient une liste vide
Donc le prédicat d'arrêt est
Je ne donne que cette méthode, c'est la plus intéressante à mon avis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part n_premiers(_, 0, []).
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Partager