入力リストが与えられたら、新しいリストを作成したいのですが、次のようにする必要があります。
- 新しいリストの前に常に h を追加します
- 入力リストの連続する 2 つの要素をすべて比較し、等しい場合は新しいリストに 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.
どうすれば正しくできますか?