我正在開展一個小項目,以傾斜序言。我現在想要做的是,給一個句子,返回一個單詞列表。所以,我正在接收一個字符數組,例如「高點和低點」,並試圖將其分解爲「高點」和「低點」。我使用的是字符數組,因爲我想用自己的語言來玩,而且我認爲字符串不會爲此工作。如何在prolog中分解一個列表,給定一個關鍵點?
這是我的代碼。
get_first_word([], _, []):-
!.
get_first_word(X, Pivot, Input):-
append(X, [Pivot|_], Input),
!.
split_at([],_).
split_at(Input, Pivot):-
get_first_word(X, Pivot, Input),
writef(X),
append(X, Y, Input),
split_at(Y, Pivot).
我得到的問題是,這變成了一個無限循環。最終它會傳遞自己的空輸入,而我的基本案例寫得不夠好來處理這個問題。我該如何解決?
在您計劃使用SWI-Prolog的情況下,您可能需要使用原子爲代表的單詞和句子。然後,您可以使用內置函數來分析和構建原子(http://www.swi-prolog.org/pldoc/doc_for?object=section(2,'4.21',swi('/doc/Manual/) ),例如'atomic_list_concat/3',它基本上完成了你對原子的描述。 – 2013-04-01 08:36:27
我正在嘗試製作一個簡單的翻譯腳本,我需要玩很多單詞和單詞部分。我能用SWIProlog「裝配」字符串嗎? – UrhoKarila
在下面看到我的回答 – 2013-04-01 13:19:59