我有以下數據:如何打印出搜索的數量有限,在序言
item(one, 50, 40).
item(two, 80, 70).
item(three, 100, 55).
item(four, 50, 45).
item(five, 50, 40).
item(six, 80, 70).
item(seven, 100, 55).
item(eight, 50, 45).
我用下面的命令來顯示所有的值:
findall((A,B,C), item(A,B,C), L).
然而,它會顯示所有項目。如果有一百個這樣的條目,這可能是一個問題。我如何顯示有限數量的項目,比如上面的情況3?
我看到這裏有一些帖子:Prolog: "findall" for limited number of solutions和Finding up to N unique solutions of a goal in Prolog和Prolog: "findall" for limited number of solutions但我無法適應那些我的問題。
我想下面的代碼,但它不拾取列表的長度:
head(N):-
findall((A,B,C), item(A,B,C),L),
writeln(L),
writeln("------ 1 ---------"),
length(L, N),
writeln(N),
writeln("------ 2 ---------"),
head2(L, N, 0).
head2(L, N, M):-
M < N,
nth0(M, L, Item),
writeln(Item),
X is M+1,
head2(L, N, X).
輸出:
?- head(3).
[ (one,50,40), (two,80,70), (three,100,55), (four,50,45), (five,50,40), (six,80,70), (seven,100,55), (eight,50,45)]
------ 1 ---------
false.
好的解決方案。謝謝。 – rnso