我是 Prolog 的新手,正在努力做到以下幾點:
我需要撰寫一個謂詞,輸出串列串列中串列元素的數量,并將答案本身輸出為串列。
例如,我想要:
clistoflists([[a,b,c,d],[e,f,g],[h,i][j,k,l]], N).
N = (4,3,2,3)
我能夠撰寫一個謂詞來計算一個簡單串列的元素:
count_list([],0).
count_list([_|T], C) :- count_list(T, CNT), C is CNT 1.
我只是非常不確定如何處理更復雜的串列串列,尤其是提供所需的輸出串列。
任何指導都將非常受歡迎。我玩這個已經太久了。
uj5u.com熱心網友回復:
最簡單的解決方案是使用謂詞length/2和maplist/3如下:
?- maplist(length, [[a,b,c,d],[e,f,g],[h,i],[j,k,l]], L).
L = [4, 3, 2, 3].
另一種選擇是創建您自己的那些謂詞版本:
maplen([], []).
maplen([X|Xs], [Y|Ys]) :-
len(X, Y),
maplen(Xs, Ys).
len([], 0).
len([_|Xs], N) :-
len(Xs, M),
N is M 1.
例子:
?- maplen([[a,b,c,d],[e,f,g],[h,i],[j,k,l]], L).
L = [4, 3, 2, 3].
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/537110.html
標籤:列表递归序言谓词
