我知道這裏有一些問題與此類似,但我沒有經驗,我不知道如何使用它們並將解決方案轉換爲我的問題;/序言 - 使用一個列表和一個列表中的元素名單
我有一個名單列表內,像這樣的: [[5],[4,7],[1,2,7],[2,6,7],[2 ,4,6,7],[2,4,7],[9,8],[3],[1]]
我需要知道例如數字3的索引。我需要知道的號碼只會出現在列表的列表中,這是調用該函數的前一個條件。我需要的索引是數字3,索引9(從1開始)。我有這個功能的草案:
given_elem_finds_pos(ListOfLists, Element, Pos):-
nth1(Pos, ListOfLists, [Element|_]).
但它只返回波什如果該元素是一個子表的頭。我需要知道如何獲得例如8.
然後我做了這一個數字:
given_elem_finds_pos([[H|T]| R], Element, Ind):-
member(Element, [H|T]),
Ind1 is Ind + 1,
given_elem_finds_pos(R, Element, Ind1).
但同樣沒有成功..誰能幫助?非常感謝!
感謝您的快速響應!我正在研究另一個條款,並試圖弄清楚你做了什麼,所以我不能說這一切都完成了,但告訴我一些事情:在最後一次迭代中,或上次調用given_elem_finds_pos/4時,Prolog結束了一個不斷增加的索引,對嗎?或者你不這樣做你的?因爲如果你這樣做,是不是最終值與解決方案一樣? –
是的你是對的,櫃檯正在增加,如果找到搜索到的子列表,計數器等於索引。這就是爲什麼你需要額外的論據。我的代碼中的停止子句,以'given_elem_finds_pos([List | R],Element,Solution,Solution)開始: - ',用當前計數器實例化解決方案索引。 –
我做到了,它的工作原理,謝謝! –