簡體   English   中英

SWI-Prolog,首先刪除一個元素,然后反轉結果列表

[英]SWI-Prolog, first delete an element then reverse the resulting list

目前,我對這個問題感到困惑-這使我發瘋。 我是Prolog的新手,所以我仍然了解基本知識。 從標題中,我要做的就是從列表中刪除一個元素,然后從結果列表中將其反轉。

到目前為止,我對如何在不同的列表上分別執行這些功能進行了一些研究,但我不知道如何在單個列表上執行這兩個功能(先刪除再反轉)。

我的撤消和刪除如下:

reverse(List, RevList) :-
    reverselist(List, [], RevList).
reverselist([], RevList, RevList).
reverselist([E|Elements], Accu, RevList) :-
    reverselist(Elements, [E|Accu], RevList).

del(Element, [Element|Tail], Tail).
del(Element, [Y|Tail], [Y|Tail1]) :-
    del(Element, Tail, Tail1).

我的嘗試:

delete_reverse(Element, [Element|Tail], Tail1) :-
    // no idea what im doing below..
    del(Element, Tail, Tail1),
    reverse(Tail1, Tail).

首先,您的del缺少基本情況:

del(_,[],[]).

然后,您的delete_reverse幾乎是正確的:您應該使用其他變量名來統一del的結果和reverse的輸入:

delete_reverse(Element, [Element|Tail], Tail1) :-
    del(Element, Tail, Temp),
    reverse_family(Temp, Tail1).

暫無
暫無

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

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