list - Prolog 谓词将两个列表相乘(表示一元数)
问题描述
我想编写一个将表示数字的列表相乘的代码,例如:
?-次([1,1,1],[1,1],Res)。
水库 = [1,1,1,1,1,1]。
times([], _, []). % base case
times([_|T], Lis, [Lis|H]) :-
times(T, Lis, H).
我已经有了上面的代码,它有点像我想要的,但不是真的。例如在询问时:
?- times([1,1,1], [1,1], Res)
Res = [[1,1],[1,1],[1,1]]。
这个想法就在那里,但我只是不知道如何解决这个问题,我理解它为什么会发生(我正在添加一个列表作为头部),所以我只是想知道是否有人可以帮助我。
提前致谢。
解决方案
[Lis|H]
将Lis
用作第一个元素,无论是否Lis
是列表。例如,您应该查看append/3
[swi-doc]以附加两个列表:
times([], _, []).
times([_|T], Lis, R) :-
append(Lis, H, R),
times(T, Lis, H).
推荐阅读
- java - 在 Android 中使用 RSA 解密 AES 密钥
- amazon-web-services - AWS EC2 分区置放群组中的机架是什么意思?
- python - Python Open() 和文件句柄?
- php - 在 acf 字段中转储数组
- django - Django模板计数器++
- android - 如何使用 MaterialCardView 获得基本布局?
- c++ - 访问 shared_ptr 矢量对象的问题
- java - 在 Java 中处理图像和文件处理
- kdb - 如何为 KDB tickerplant 指定文件路径以在一天结束时将数据保存到
- python - python中的正则表达式