最大子列表长度(Prolog)-无剪切或逻辑Prolog内置

最大子列表长度(Prolog)-无剪切或逻辑Prolog内置,prolog,Prolog,我是序言的初学者… 我想做的与转置类似,但不使用任何剪切或逻辑Prolog内置。 此外,如果列表没有任何元素,则其元组条目应为[]。 比如说我有一个列表我的pred([[a,b,c],[1,2]],Y) 这应该输出: Y = [[a ,1], [b, 2], [c , []]] 在转置过程中,若子列表比最大子列表的长度小,则在此处添加[] 我正在寻找一个对初学者友好但有效的解决方案,它可以增强像我这样的初学者的理解:) 我试图搜索,但到目前为止,所有解决方案都使用了剪切或一些逻辑Prolog

我是序言的初学者…
我想做的与转置类似,但不使用任何剪切或逻辑Prolog内置。
此外,如果列表没有任何元素,则其元组条目应为
[]
。 比如说我有一个列表
我的pred([[a,b,c],[1,2]],Y)

这应该输出:

Y = [[a ,1], [b, 2], [c , []]] 
在转置过程中,若子列表比最大子列表的长度小,则在此处添加
[]

我正在寻找一个对初学者友好但有效的解决方案,它可以增强像我这样的初学者的理解:) 我试图搜索,但到目前为止,所有解决方案都使用了剪切或一些逻辑Prolog内置:(


到目前为止,我在任何地方都没有找到我的问题的答案…

这是家庭作业吗?而且你的问题标题似乎有点不对劲。你的问题中没有任何地方问列表长度。问题或解决方案可能根本不涉及列表长度的实际确定。但你真的应该至少做一个序言教程。你对my_pred_func[[[a,b,c][1,2]],Y]有基本语法问题。我现在正在学习prolog教程:),不,这不是家庭作业。我设法在Scheme中实现了类似的功能。但我很难将其转换为序言:(我基本上知道这个过程,但我需要一些帮助,比如我们使用任何内置逻辑Prolog或任何cut时最简单的解决方案。我认为,低调的解决方案也可以帮助我学习列表和子列表。在Prolog中,当涉及到列表时,你希望递归思考。将谓词视为声明关系的规则而不是一个执行任务的函数。我不会称它为
my|u pred|u func
。Prolog在匹配(统一)方面很聪明。因此,你可以有一个谓词头,
zip|u列表([X | Xs],[Y | Ys],[X,Y]| t]):-…
(你填写)。根据你想要处理空列表的方式,你需要不止一个基本情况:
zip|列表([],[],[],[])。
(普通情况),
邮政编码列表([X | Xs],[X,[]T]):-…
(您填写)和
邮政编码列表([],[Y | Ys],[Y]| T]):-…
(您填写).因为你的目标是学习,我在之前的评论中给了你提示,而不是仅仅发布一个答案和一个解决方案。看看你是否能从提示中做到。这是一个非常简单的解决方案,不需要剪切或列表处理内置。:)此外,尝试谷歌搜索“99个Prolog问题”其中有大量的练习和答案,说明了许多基本原理,特别是递归列表处理。我的问题是我是否知道元素的数量(子列表)这很好,但是如果是n个长度为n的子列表,我怎么认为呢?它应该对任意数量的不同长度的子列表都有效。比如,如果最大长度为4,最小长度小于最大长度,那么我需要用空“[]填充转置结果中较小的子列表这么多次。这是我的方法,但我不知道如何思考n个子列表:(这是一项家庭作业吗?你的问题标题似乎有点不对劲。你的问题中没有任何地方询问列表长度。问题或解决方案可能根本不涉及列表长度的实际确定。但你真的至少应该阅读Prolog教程。
my_pred_func有基本语法问题[[[a,b,c][1,2]],Y]
。我现在正在学习prolog教程:)不,这不是家庭作业。我在Scheme中尝试了类似的功能。但我很难将其转换为prolog:(我基本上知道这个过程,但我需要一些帮助,比如我们使用任何内置逻辑Prolog或任何cut时最简单的解决方案。我认为,低调的解决方案也可以帮助我学习列表和子列表。在Prolog中,当涉及到列表时,你希望递归思考。将谓词视为声明关系的规则而不是一个执行任务的函数。我不会称它为
my|u pred|u func
。Prolog在匹配(统一)方面很聪明。因此,你可以有一个谓词头,
zip|u列表([X | Xs],[Y | Ys],[X,Y]| t]):-…
(你填写)。根据你想要处理空列表的方式,你需要不止一个基本情况:
zip|列表([],[],[],[])。
(普通情况),
邮政编码列表([X | Xs],[X,[]T]):-…
(您填写)和
邮政编码列表([],[Y | Ys],[Y]| T]):-…
(您填写).因为你的目标是学习,我在之前的评论中给了你提示,而不是仅仅发布一个答案和一个解决方案。看看你是否能从提示中做到。这是一个非常简单的解决方案,不需要剪切或列表处理内置。:)此外,尝试谷歌搜索“99个Prolog问题”其中有大量的练习和答案,说明了许多基本原理,特别是递归列表处理。我的问题是我是否知道元素的数量(子列表)这很好,但是如果是n个长度为n的子列表,我怎么认为呢?它应该对任意数量的不同长度的子列表都有效。比如,如果最大长度为4,最小长度小于最大长度,那么我需要用空“[]填充转置结果中较小的子列表这么多次。这是我的方法,但我不知道如何思考n个子列表:(