prolog - 从 SWI-Prolog 中的列表中删除
问题描述
我是 SWI-Prolog 的初学者,我有一个问题。请帮我。如何从列表中删除最后出现的 9?
例子:
?- delete([9,9,9])
[9,9]
?- delete([9,4,1,2,3,9,53,2,9,2])
[9,4,1,2,3,9,53,2,2]
解决方案
您必须 1) 将列表分解为一个Prefix
列表(可能包含 9)、一个[9]
单元素列表和一个Suffix
列表(不包含 9),然后连接Prefix
和Suffix
列表。写一个谓词来发现Prefix
和Suffix
给定一个列表L
。
如果我们不从程序上或按照“这将在 CPU 中花费多少”的思路进行思考,那么decompose(List,Prefix,Suffix)
发现Prefix
并Suffix
可以写在一个单独的子句中的谓词,一个纯逻辑语句,使用append/2
andmember/2
和 negation 为失败。
List
只需要第二行来涵盖开头没有 9 的情况。
推荐阅读
- javascript - 如何从 div 中获取数据并将其放入 JS 数组中
- r - 在 R Shiny 中,如何只更新用户输入矩阵中的一个值?
- spring - Spring JPA 测试 - 回滚
- python - Pytesseract (Tesseract OCR) 没有收到一些数字
- amazon-web-services - 如何将logstash与opensearch集成到logstash-output-opensearch
- javascript - 为什么 React 中 useEffect 钩子中的 setInterval 一直在运行?
- bash - Ubuntu 命令行 从转换后的 excel 文件中提取零件编号和数量
- c# - WinUI 3.0 桌面:文本框的背景颜色在鼠标悬停时更改
- java - 如何通过扫描类路径而不是手动指定要自动装配的类来使用 spring 和 junit 进行集成测试?
- python - 在三个字符串列表中搜索元素的 Python 函数