簡體   English   中英

單獨的清單A / B - > B swi-prolog

[英]Separate list A/B -> B swi-prolog

我有一個列表[2/4,2 / 6,1 / 2,7/5]和我想創建僅由第二號的列表[4,6,2,5]。

我在想這樣的事情:

newlist(L,L2):-
   newlist(L,A/B),
   newlist(A/B,B),
   newlist(B,L2).

這沒用,有什么建議嗎?

為單個元素定義一個謂詞:

pair_to_2nd(_/B, B).

現在將此謂詞應用於列表:

?- maplist(pair_to_2nd, [2/4, 3/6, 1/2, 7/5], L).
L = [4, 6, 2, 5].
listDenom([ ],[ ]).
listDenom([_/D|T],[D|V]) :- listDenom(T,V).

這是一個使用string_to_list的解決方案。

splitList(A) :-  
    string_to_list(A, [_,_,_,A1,_,_,_,B1,_,_,_,C1,_,_,_,D1,_]),  
    string_to_list(A2, [A1]),  
    string_to_list(B2, [B1]),  
    string_to_list(C2, [C1]),  
    string_to_list(D2, [D1]),  
    write([A2,B2,C2,D2]).

例:

?- splitList('[2/4,3/6,1/2,7/5]').
[4,6,2,5]
true.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM