2
我的任務是這樣的:編寫一個讀取整數x
和整數列表L
;然後將x
所有位置的列表定位到L
,並返回結果列表。例如,對於x=2
和L=[1,2,3,4,2,5,2,6]
程序應返回列表R=[2,5,7]
。在Prolog中查找列表中的值的所有位置
到目前爲止,我已經能夠寫一個indexOf
謂:
indexOf([E|_], E, 1).
indexOf([_|T], E, I) :- indexOf(T, E, I2), I is I2 + 1.
然而,這並不能「迴歸」的列表。所以:
indexOf([a,b,c,a,d], a, R).
R = 1;
R = 4
我想要做這樣的事情:
findAll([a,b,c,a,d], a, R).
R = [1, 4]
但我不知道如何收集值成一個列表。
這是一個學校作業,所以我只想欣賞一下正確的方向。
謝謝!我添加了這個子句:'indices_1([_ | T],E,Is,I): - I1是I + 1,indices_1(T,E,Is,I1)。' – 2014-10-06 19:52:30
您的解決方案只返回完整列表(例如'R = 1,3]'),而我的每一步都返回它(例如'R = [1,3]; R = [1]; R = [3],R = []')。爲什麼會這樣呢? – 2014-10-06 20:10:13
@AndrewBurgess查看我的編輯 – 2014-10-06 20:30:12