Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >给定重复次数的另一个列表的重复列表

给定重复次数的另一个列表的重复列表
EN

Stack Overflow用户
提问于 2021-05-12 08:28:42
回答 1查看 80关注 0票数 0

我试图构建一个谓词itrepeats(all,part,num0,num)

"all"“部件”列表的完整重复列表。"num" in ”所有“”和"num0"的重复次数,“num”E 215

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
itrepeats(['a','b','c','a','b','c','a','b','c'],['a','b','c'],0,R)

产出应是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
R=3

另一个例子是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
itrepeats(['a','b','c','c','a','b','a','b','b'],['a','b','c'],0,R)

产出应是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
no

"all"空的另一个示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
itrepeats([],['a','b','c'],0,R)

产出应是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
R=0

我试过这样做,但它不起作用,即使只是针对两个元素的列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
itrepeats([],[_],0,0).
itrepeats([A,B|R],[A,B|R2],0,N):-
    N is N-1,
    itrepeats(R,[A,B|R2],0,N).

我确信应该是这样的,在"all"为空之前,在没有实际迭代的前一个元素的情况下执行下一个迭代,但我不知道如何做好它。帮帮忙,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-12 12:40:15

这可能对你有帮助。

一个常见的Prolog成语是使用带有附加状态的助手谓词作为额外的参数。在这里,我们需要一个累加器来计数匹配的子列表,我们用0作为初始值进行种子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
number_of_sublists( [H|T] , SL , N ) :- number_of_sublists( [H|T], SL, 0, N ).

如果找到匹配的子列表,这个过程非常简单:

如果所需的子列表为当前列表的前缀,则将计数标记为1。

  • 带列表的头,并在尾部递归。当列表为空时,累加器的值是匹配子列表的最终计数。

要找出一个列表是否是另一个列表的前缀很容易。只需匹配列表项,直到一个列表为空。(请注意,空列表将作为每个列表的前缀。)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
is_prefix_of( []     , _      ).   % once the prefix list is empty, we're done: the prefix list is the prefix of the other list.
is_prefix_of( [X|Xs] , [X|Ys] ) :- % Otherwise, if the two lists share a common head,
    is_prefix_of(Xs, Ys).          % - then recurse down on the tails.

把所有的东西组合在一起:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
number_of_sublists( []    , _  , N , N ) .  % once the list is exhausted, we're done. The accumulator is the final tally.
number_of_sublists( [H|T] , SL , X , N ) :- % otherwise...
    ( is_prefix_of(SL, [H|T])               % - if the sublist is a prefix of the list
      -> X1 is X+1                          %   - then increment the accumulator by 1
      ;  X1 is X                            %   - else don't increment 
    ),                                      %
    number_of_sublists( T, SL, X1, N ).     % remove the head of the list and recurse down on its tail.

您可能会注意到,使用findall/3append/3可以更容易地完成这一任务,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
number_of_sublists( L, SL, N ) :- findall( SL , prefix_of(SL,L), Sls), length(SLs,N).

prefix_of( SL, L ) :-
  append( _  , Sfx , L   ) ,
  append( SL , _   , Sfx ).
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67507544

复制
相关文章
leetcode: 找出不重复的列表
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/24/
用户7685359
2020/08/21
8080
Python - 删除列表中的重复字典
Python 是一个非常广泛使用的平台,用于 Web 开发、数据科学、机器学习以及自动化执行不同的过程。我们可以将数据存储在python中,以不同的数据类型,例如列表,字典,数据集。python字典中的数据和信息可以根据我们的选择进行编辑和更改
很酷的站长
2023/08/11
3141
Python - 删除列表中的重复字典
如何去掉列表中重复的元素
列表,在Python中是最常见的一种数据类型,对它了解的越多,编程的效率就越高。
TalkPython
2019/10/29
7.7K0
如何去掉列表中重复的元素
Python——去除列表中的重复元素
set(['I', 'I', 'M', 'E']) set(['I', 'E', 'M']) 集合中,没有重复的元素。利用集合这种数据结构的特性,可以去除列表中的重复元素。 一个列表中可能含有重复元素,使用set()可以实现列表的去重处理,但是无法知道哪些元素是重复的,下面的函数用于找出哪些元素重复了,以及重复的次数。 from collections import Counter a = [1,4,2,3,2,3,4,2] b = Counter(a) #求数组中每个数字出现了几次 print(b)
瑞新
2020/07/07
5K0
Python 使用set()去除列表重复
一、去除重复元素方法: 1. 对List重复项,可以使用set()去除重复 a = [5, 2, 5, 1, 4, 3, 4,1,0,2,3,8,9,9,9] print(list(set(a))) #将去掉重复的项后,再重新转成list 最后的执行结果 F:\Python\venv\Scripts\python.exe F:/Python/123.py [0, 1, 2, 3, 4, 5, 8, 9] 2. 使用fromkeys去除重复 m = [1,3,6,2,2,8,7,5,3] a = {}.fro
py3study
2020/01/06
3K0
盘点对Python列表中每个元素前面连续重复次数的数列统计
前几天在Python钻石流群有个叫【周凡】的粉丝问了Python列表的问题,如下图所示。
Python进阶者
2022/06/05
2.4K0
盘点对Python列表中每个元素前面连续重复次数的数列统计
使用Python,怎么去除列表中重复的内容?
问:使用Python,怎么去除列表中重复的内容? 今日分享的内容,很简单,很常用。话不多说,直接开始。 mylist = ["a", "b", "a", "c", "c"] mylist = list(dict.fromkeys(mylist)) print(mylist)
TalkPython
2020/12/29
3.6K0
11 - 去掉列表或元组中的重复元素
在python 中如何定义集合,集合与列表有什么区别 # 列表 a = [1, 2, 3, 4, 5] print(type(a)) # 元组 b = (1, 2, 3, 4, 5) print(type(b)) # 集合 c = {1, 2, 3, 4, 5} print(type(c)) <class 'list'> <class 'tuple'> <class 'set'> # 区别: # 1. 集合没有重复的元素,而列表可以有重复的元素 a = [1, 2, 2, 3, 4] print(a)
ruochen
2021/05/22
3.6K0
11 - 去掉列表或元组中的重复元素
python中删除列表中重复元素
在面试中,很可能遇到给定一个含有重复元素的列表,删除其中重复的元素,下边给出三种方法来实现这个功能。
全栈程序员站长
2022/09/07
4.1K0
Python中如何获取列表中重复元素的索引?
昨天分享了一个文章,Python中如何获取列表中重复元素的索引?,后来【瑜亮老师】看到文章之后,又提供了一个健壮性更强的代码出来,这里拿出来给大家分享下,一起学习交流。
前端皮皮
2022/08/17
13.4K0
Python中如何获取列表中重复元素的索引?
python去除列表里的重复元素的集中方法汇总
python的列表(数组)无比强大,下面介绍集中去除列表中重复元素的方法,各有利弊,可根据需要选用
用户7999227
2021/11/01
5630
python去除列表里的重复元素的集中方法汇总
python的列表(数组)无比强大,下面介绍集中去除列表中重复元素的方法,各有利弊,可根据需要选用
大师级码师
2021/11/03
6540
Excel如何统计重复次数
在 Excel 中有时我们会需要统计特定单元格在某个区域范围内的重复次数,虽然工具栏并没有直接提供此功能,但借助 COUNTIF 函数可以轻松的完成任务。
reizhi
2022/09/26
1.8K0
Excel如何统计重复次数
python统计元素重复次数
python统计元素重复次数 # !/usr/bin/python3.4 # -*- coding: utf-8 -*- from collections import Counter arr = ['BAISC', 'Python', 'BASICA', 'GVBASIC', 'GWBASIC', 'Python', 'ETBASIC', 'QBASIC', 'Quick', 'Basic', 'Turbo', 'Basic'] counts = list(Counter(arr).items())
机器学习和大数据挖掘
2019/07/02
1.3K0
Excel公式练习94:统计子列表在列表中出现的次数
引言:本文的练习整理自chandoo.org。多一些练习,想想自己怎么解决问题,看看别人又是怎解决的,能够快速提高Excel公式编写水平。
fanjy
2021/09/22
2.3K0
DEDECMS织梦文章列表标题重复显示解决方案
今天还原数据库后,浏览网页http://www.mimisucai.com/a/wangluobiancheng/list_7_2.html发现列表页标题有重复,先上图:
米米素材网
2022/07/16
4.5K0
DEDECMS织梦文章列表标题重复显示解决方案
72-R编程12-删除列表的成员对象中的重复内容
比如 a,b,c 在列表1 出现,bc 在列表2 出现,ad 在列表3 出现,那么仅仅保留1:abc, 2:空, 3:d。这个列表中的对象可以是数据框,也可以是单个字符,也可以是列表,可以是任何类型的对象。
北野茶缸子
2021/12/17
2.7K0
预测随机机器学习算法实验的重复次数
许多随机机器学习算法的一个问题是同一数据上相同算法的不同运行会返回不同的结果。 这意味着,当进行实验来配置随机算法或比较算法时,必须收集多个结果,并使用平均表现来总结模型的技能。 这就提出了一个问题,即一个实验的重复次数是否足以充分描述一个给定问题的随机机器学习算法的技巧。 通常建议使用30个或更多个重复,甚至100个。一些从业者使用数千个重复,似乎超出了收益递减的想法。 在本教程中,您将探索统计方法,您可以使用它们来估计正确的重复次数,以有效地表征随机机器学习算法的性能。 本教程假定您有一个工作
AiTechYun
2018/03/02
1.9K0
预测随机机器学习算法实验的重复次数
点击加载更多

相似问题

重复给定次数的索引

45

Prolog -列表中的重复次数

20

仅重复动画给定的次数

12

减少重复元组的列表并计算重复次数

24

函数,该函数返回给定列表中最长重复次数的长度。

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文