簡體   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