2011-09-18 12 views
1

- 私はいくつかの条件があります:用語の一般化を得る方法。例えばプロローグ

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

は、どのように私は次の言葉を得ることができますか?

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

あなたが "取得" とは何を意味するのですか?あなたは前の3つから最後の言葉を作りたいですか? – ThomasH

+0

今質問する私はそれを更新する。 – nub

答えて

2

プログラム:

:- 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)). 

コール:

?- transform_moves(1). 
関連する問題