2011-09-18 4 views
1

Par exemple - j'ai quelques termes:Comment obtenir la généralisation du terme. Prolog

moves(1, [1]). 
moves(1, [2]). 
moves(1, [3]). 

Comment puis-je obtenir le prochain trimestre?

moves(1, [1,2,3]). 

% I have 
    moves(1, [1]). 
    moves(1, [2]). 
    moves(1, [3]). 

% I need to write some predicate which 
    transform_moves :- 
     % ... 
     % ... 
     assert(moves(Pos, Arr)), 

     % moves(1, [1,2,3]). 
+0

Que voulez-vous dire par "obtenir"? Voulez-vous construire le dernier terme des trois précédents? – ThomasH

+0

Sa réponse à la question maintenant. Je le mets à jour. – nub

Répondre

2

Programme:

:- dynamic moves/2. 

moves(1, [1]). 
moves(1, [2]). 
moves(1, [3]). 

transform_moves(Pos) :- 
    findall(Y, moves(Pos, [Y]), L), 
    retractall(moves(Pos, _)), 
    assert(moves(Pos, L)). 

Appel:

?- transform_moves(1). 
Questions connexes