1

Bonsoir,
Je dois écrire en Prolog le prédicat clos(X) qui renvoie vrai uniquement si X est un terme clos (terme qui ne contient pas de variable, par exemple, allo ou f(h,j,k)).
Le problème est qu'il faut lister les éléments du terme et regarder un par un si l'élément est une variable. Si le terme est de la forme f(a,X,b) je vois ce qu'il faut faire, mais s'il est de la forme f(t1,......,tn) je ne sais plus du tout.
Merci!

2

Par récurrence, comme toujours en Prolog.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

Je vois bien comment il faut faire, mais je ne sais pas quels prédicats assembler pour arriver à traduire en Prolog...

4

f(t1,......,tn) est clos si et seulement si la liste [t1,......,tn] est close.
Et ça se définit par récurrence:[ul][li][] est clos.[/li][li]Si [t1,...,tn] est clos et tn+1 est clos, alors [t1,...,tn+1] est clos. (Ou: Si t1 est clos et [t2,...,tn] est clos, alors [t1,...,tn] est clos. C'est la forme qui te sera plus utile en Prolog.)[/li][/ul]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5

Merci de ta réponse, par contre j'arrive toujours au même problème, à savoir comment dire que la liste est close!

6

je suis un débiteur en prolog, j'ai un programme que je n'arrive pas à faire, quelqu'un peut m'aider?
Voici le problème:
Est-il possible de distribuer les entiers de 1 à N dans P boites, de sorte qu'aucune des boites ne contienne la somme de deux quelconques de ses éléments, ni le double d'un quelconque de ses éléments.
Par exemple , si N=12 ET P=3, la réponse au problème est OUIII
- dans la boite 1, les entiers 1,3,10 et12
- dans la boite 2, les entiers 2,5,8 et 11
- dans la boite 3, les entiers 4,6,7 et 9

Mon problème c'est d'écrire un prédicat schurt3(+N) qui réussit si le problème de Schur pour N et 3 a une solution.
Merci beaucoup