1
我想通過人工智能的範例學習常見的lisp。書中的練習之一是定義一個函數,該函數將返回給定列表的最後一個名字,而不需要特定的後綴或單詞。作爲一個例子,如果列表中包含bruce橫幅,phd它會返回橫幅。這裏是我的解決方案,但是這仍然會返回的最後一個元素,無論它是否是一個後綴或不返回倒數第二個列表元素在共同的lisp
(Defun last-name (name)
(if (member (last name) *suffix*)
(Last-name (butlast name))
(last name)))
其中
(defparameter *suffix* '(MD PHD DR))
類似的演習在書中呈現在列表中省略前綴使用'rest'而不是'butlast'並返回第一個元素。這工作得很好。
(defparameter *titles* '(Mr MRS MS SIR MADAM DR ADMIRAL MAJOR GENRAL))
(Defun first-name (name)
(if (member (first name) *titles*)
(first-name (rest name))
(first name)))
我不知道我是否遺漏了姓氏函數中的任何內容,或者如果我的邏輯不正確。任何幫助是極大的讚賞! 道歉,如果文本很長,這是我的第一篇文章,我不知道我應該包括什麼水平的細節。
謝謝。
謝謝你這麼多,很多解釋 – oracle