gpt4 book ai didi

list - 如何删除序言中的子列表?

转载 作者:行者123 更新时间:2023-12-04 23:00:22 25 4
gpt4 key购买 nike

有人能帮助我吗?我需要在序言中解决这个问题,我不知道如何...

“给定一个整数列表。删除由减少元素形成的所有子列表。”

最佳答案

我们分三步删除降序子列表:

  • 单独的减少和非减少部分(使用
    splitlistIfAdj/3 (#=<)/3 )
    ?- splitlistIfAdj(#=<,[ 1 , 2 , 3 , 4,3,2,1 , 2 , 3 , 4,3,2,1 , 2 ],Xs1).
    Xs1 = [[1],[2],[3],[4,3,2,1],[2],[3],[4,3,2,1],[2]].
  • 排除非单例列表(使用 tfilter/3 Prolog lambdas (=)/3 )
    ?- tfilter(\[_|T]^(T=[]),[[1],[2],[3],[4,3,2,1],[2],[3],[4,3,2,1],[2]],Xs2).
    Xs2 = [[1],[2],[3], [2],[3], [2]].
  • 将单例列表映射到项目(使用 maplist/3 Prolog lambdas )
    ?- maplist(\[H|_]^H^true,[[1],[2],[3],[2],[3],[2]],Xs).
    Xs = [ 1 , 2 , 3 , 2 , 3 , 2 ].


  • 让我们把它放在一起!
    :- use_module(library(clpfd)).
    :- use_module(library(lambda)).

    descending_removed(Xs0,Xs) :-
    splitlistIfAdj(#=<,Xs0,Xs1),
    tfilter(\[_|T]^(T=[]),Xs1,Xs2),
    maplist(\[H|_]^H^true,Xs2,Xs).

    以下是一些查询:
    ?- descending_removed([1,2,3,4,3,2,1,2,3,4,3,2,1,2],Xs).
    Xs = [1,2,3,2,3,2].

    ?- descending_removed([4,3,2,1,0],Xs).
    Xs = [].

    ?- descending_removed([1,2,3,4],Xs).
    Xs = [1,2,3,4].

    ?- descending_removed([1,2,3, 4,3,3,2,2,1],Xs).
    Xs = [1,2,3].

    ?- descending_removed([1,2,3,4,4,3,3,2,2,1],Xs).
    Xs = [1,2,3,4].

    关于list - 如何删除序言中的子列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27245342/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com