2015-11-20 138 views
0

我需要在Prolog中創建一個split/4函數,我很確定我很接近,但是我看不到一個錯誤。該程序將獲取一個列表,一個關鍵和兩個輸出列表(小和大)。如果列表中的元素小於鍵,則將其放在較小的位置,否則將其放大。Prolog分割列表

所以我現在是:

split([H|T], Key, [H|ST], Big) :- H < Key, split(T, Key, ST, Big). 
split([H|T], Key, Small, [H|BT]) :- H >= Key, split(T, Key, Small, BT). 

我可以假設的是,名單和主要被實例化。如果有人能指出我的錯誤會很棒!我想了解我做錯了什麼。

回答

3

你唯一缺少的是基礎案例。目前,當輸入列表爲空時,您的謂詞無法執行任何操作,最終在處理所有列表項後處理任何輸入。

split([], _, [], []). 

只需添加此規則,它將按預期工作。

+0

哇,我簡直不敢相信這件事太簡單了,我錯過了!謝謝! –