当给定一些输入列表时,我想构建一个新列表,它应该:
- 始终在新列表前面添加 h
- 比较输入列表的每两个连续元素,如果它们相等,则将 y 附加到新列表中,如果不相等,则附加 x。
例子:
?- control([a,a,b,b],R).
R = [h,y,x,y].
到目前为止,这是我的代码:
control([H,H|T],K,[K,0|T2]):- control([H|T],[K,0],T2).
control([H,J|T],K,[K,1|T2]):- control([J|T],[K,1],T2).
control([H],G,G).
但它不能正常工作。
?- control([a,a,b,b],[h],L).
L = [[h], 0, [[h], 0], 1, [[[h], 0], 1], 0, [[[...]|...], 1], 0] ;
L = [[h], 0, [[h], 0], 1, [[[h], 0], 1], 1, [[[...]|...], 1], 1] ;
L = [[h], 1, [[h], 1], 1, [[[h], 1], 1], 0, [[[...]|...], 1], 0] ;
L = [[h], 1, [[h], 1], 1, [[[h], 1], 1], 1, [[[...]|...], 1], 1] ;
false.
我怎样才能使它正确?