繁体   English   中英

在SWI-Prolog中列出

[英]List in SWI-Prolog

请帮我! 我不了解SWI-Prolog

从列表L1到列表L2,另一个元素等于列表L1中的下三个项目的算术平均值。 如果L1元素的数量不能被3整除,则列表L2中的最后一项通过将一个或两个最近项列表L1的总和除以3获得。 引入列表L1进行提示屏幕。 结果,程序应输出输入L1和L2结果列表。

列表项可根据要求提供。

这个问题几乎可以逐字翻译成Prolog。

首先,添加基本案例,说一个空列表转换为一个空列表:

by_three([], []).

现在添加主要规则,以三个为一组来抓取初始项H1H2H3并将它们取平均:

by_three([H1,H2,H3|T],[A|RT]) :- A is (H1+H2+H3) / 3, by_three(T, RT).

请注意此处的递归调用:在规则末尾的by_three/2调用中,原始列表的尾部T转换为RT

最后,为一个元素列表和两个元素列表添加另外两种情况:

by_three([H],[A]) :- A is H / 3.
by_three([H1,H2],[A]) :- A is (H1+H2) / 3.

就是这样,您完成了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM