1

長さが等しい 2 つのリストの違いを判断し、変数の違いの数を示すプログラムを作成したいと考えています。これまでの私のコードは次のとおりです。

difference([],[],0).
difference(L1,L2,N) :- 
    L1=[H1|T1], 
    L2=[H2|T2], 
    H1=H2, 
    difference(T1,T2,N).
difference(L1,L2,N) :- 
    L1=[H1|T1],
    L2=[H2|T2],
    H1\=H2,
    NZ is N + 1,
    difference(T1,T2,NZ).

プログラムは 2 つの同一のリストに対して機能しますが、リスト間の違いはカウントされません。十分にインスタンス化されていません。」これを修正する方法は?

前もって感謝します!

4

1 に答える 1

3

あなたはとても近くにいます。問題は、まだインスタンス化されていないこの行NZ is N + 1であり、インスタンス化されるのを待つことができない可能性があります。NNZN

解決策は、NZ を取得してから を追加すること1です。

difference([],[],0).
difference(L1,L2,N) :- 
    L1=[H1|T1], 
    L2=[H2|T2], 
    H1=H2, 
    difference(T1,T2,N).
difference(L1,L2,N) :- 
    L1=[H1|T1],
    L2=[H2|T2],
    H1\=H2,
    difference(T1,T2,NZ),
    N is NZ + 1.
于 2016-11-23T15:24:23.900 に答える