gpt4 book ai didi

list - 从列表列表中获取元素

转载 作者:行者123 更新时间:2023-12-01 06:16:03 24 4
gpt4 key购买 nike

是否可以从 Prolog 的列表中获取所有元素?

类似:我们有 getElements([[[a,b,[c]],d,e],f,g,[h,[i,j]]],S) 结果是:S = [a,b,c,d,e,f,g,h,i,j] ...

感谢您的帮助。

最佳答案

您要求列表列表中的所有元素。也就是说,对于 [[1,2,3],[4]],这将是列表 [1,2,3,4]。然而,对于 [[[1],[3]]] 这将是列表 [[1],[3]] 因为 [1][3] 是元素。出于这个原因, flatten/2 是不正确的,它给你 [1,3] 作为答案。此外,对于 1 它给出 [1]...

这是使用 的解决方案:

seq([]) --> [].
seq([E|Es]) --> [E], seq(Es).

seqq([]) --> [].
seqq([Es|Ess]) --> seq(Es), seqq(Ess).

?- phrase(seqq([[[1],[3]]]), Xs).
Xs = [[1],[3]].
?- phrase(seqq(1), Xs).
false.

此解决方案现在也适用于以下情况:

?- phrase(seqq([S1,S2]), [1,2]).
S1 = [], S2 = [1,2]
; S1 = [1], S2 = [2]
; S1 = [1,2], S2 = []
; false.

flatten/2 完全错误:

?- flatten([S1,S2],[1,2]).
S1 = 1, S2 = 2.

关于list - 从列表列表中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777077/

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