[英]List in SWI-Prolog
請幫我! 我不了解SWI-Prolog
從列表L1到列表L2,另一個元素等於列表L1中的下三個項目的算術平均值。 如果L1元素的數量不能被3整除,則列表L2中的最后一項通過將一個或兩個最近項列表L1的總和除以3獲得。 引入列表L1進行提示屏幕。 結果,程序應輸出輸入L1和L2結果列表。
列表項可根據要求提供。
這個問題幾乎可以逐字翻譯成Prolog。
首先,添加基本案例,說一個空列表轉換為一個空列表:
by_three([], []).
現在添加主要規則,以三個為一組來抓取初始項H1
, H2
和H3
並將它們取平均:
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.