prolog - 计算列表中参数的排名
问题描述
我的问题是如何编写一个程序'ranking(List, Item, rank)',给定一个List和Item将计算列表索引,整数列表N使得Item是列表List的第N个项目。例如:
ranking([a,b,c,d,d,c,b,a], a, Rank) Rank= [1,8]
ranking([a,b,c,d,d,c,b,a], b, Rank) Rank = [2,7]
ranking([a,b,c,d,d,c,b,a], c, Rank) Rank = [3,6]
ranking([a,b,c,d,d,c,b,a], e, Rank) Rank = []
这是我尝试过的:
ranking([E|_], E, 1).
ranking([_|T], E, I) :- ranking(T, E, I2), I is I2 + 1.
我得到了什么:
ranking([a,b,c,a,d], a, R).
R = 1 ? ;
R = 4 ? ;
我不知道如何收集职位并将它们放入列表中。就像:R = [1,4]。
解决方案
推荐阅读
- node.js - Node.js 应用程序在 docker 上运行时不会进入 try..catch 块
- python - 根据另一页上的过滤数据表更新一页上的图
- assembly - 在向量的浮点和定点元素之间进行转换时,ARM 上 VCVT 指令的 x86 等效项是什么?
- ios - 有没有办法在 iOS 上的旧通知之上显示持久的本地通知?
- java - 如何从 Java 中的字符串路径加载 JSON 并打印 json 值?
- regex - 如何在ansible中使用变量进行正则表达式搜索
- flutter - 我该如何解决它“必须向文本小部件提供非空字符串”
- python - 如何删除方括号并将该数据存储在python中的dict中
- jasper-reports - jasper 报告中所有元素的位置向下移动了 0.06 英寸
- node.js - 如何保存加密文件并使用nodejs读取文件