4

Prologでネストされたリスト要素をカウントするにはどうすればよいですか?次の述語を定義しました。これにより、ネストされたリストが1つの要素としてカウントされます。

length([ ], 0).
length([H|T],N) :- length(T,M), N  is  M+1.

使用法:

?- length([a,b,c],Out).
Out = 3 

これは機能しますが、ネストされた要素もカウントしたいと思います。

length([a,b,[c,d,e],f],Output).
?- length([a,b,[c,d,e],f],Output).

出力=6

4

1 に答える 1

3
len([H|T],N) :-
    len(H, LH),
    len(T, LT),
    !,
    N is LH + LT.
len([], 0):-!.
len(_, 1):-!.

テスト:

?- len([a,b,[c,d,e],f],Output).
Output = 6.
于 2009-09-06T10:39:04.150 に答える