5

不完全なリストを差分リストに、またはその逆に変換したい。

これは、通常のリストを差分に変換するコードです。

reg2diff(L,X-Y):-append(L,Y,X).

どうすれば他の方向に進むことができますか?

4

2 に答える 2

1

差分リストが不完全:

inc2diff(L,Z):- 
  (  nonvar(L) 
  -> ( L=[_|T] -> inc2diff(T,Z) ; L=[] -> Z=[] )
  ;  L=Z
  ).

として使用します

23 ?- L=[1,2,3|_],inc2diff(L,X).
L = [1, 2, 3|X].

24 ?- L=[1,2,3|Z],inc2diff(L,X).
L = [1, 2, 3|X],
Z = X.

25 ?- L=[1,2,3],inc2diff(L,X).
L = [1, 2, 3],
X = [].
于 2014-01-13T21:58:27.203 に答える
-1
| ?- listing(dl_list),dl_list([a,b,c,d|X]-X,L).

% file: ...util.pg

dl_list(A - [], A).

L = [a,b,c,d]
X = []

yes
于 2016-06-05T14:24:29.010 に答える