亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刪除列表中的元音

刪除列表中的元音

刪除列表中的元音編寫一個刪除元音(String,NoVowelsString)的程序,刪除給定字符串中的所有元音。到目前為止,我已經有了這個條件vowel(X):- member(X,[a,e,i,o,u])。然后我想到了刪除其他列表中所有元素的那個:delete2([],L1,L1).delete2([H|T],L1,L3) :-    delete2(H,L1,R2),    delete2(T,R2,L3).所以有這兩個我認為我可以為那些被刪除的元素設置一個條件,他們必須成為其中的一員[a,e,i,o,u]。雖然我還沒有到達任何地方。
查看完整描述

3 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

這里是使用DCG的解決方案。注意如何獲得'輸出'(沒有參數傳遞,只有差異列表)

novowels --> ("a";"e";"i";"o";"u"), !, novowels.% or ..% novowels --> [C], {memberchk(C, "aeiou")}, !, novowels.novowels, [C] --> [C], !, novowels.novowels --> [].

我必須承認第二次削減不喜歡我,但似乎需要。

測試:

?- phrase(novowels, "abcdefghilmnopq", L),format('~s',[L]).bcdfghlmnpqL = [98, 99, 100, 102, 103, 104, 108, 109, 110|...].

編輯關于第二個剪切,似乎需要'左手'符號:如果我用參數編碼,沒有剪切,我得到一個正確的解析:

novowels(Cs) --> ("a";"e";"i";"o";"u"), !, novowels(Cs).% novowels(Cs) --> [C], {memberchk(C, "aeiou")}, !, novowels(Cs).novowels([C|Cs]) --> [C], novowels(Cs).novowels([]) --> [].

測試:

?- phrase(novowels(L), "abcdefghilmnopq"),format('~s',[L]).bcdfghlmnpqL = [98, 99, 100, 102, 103, 104, 108, 109, 110|...] ;false.

我想知道這是否是DCG翻譯的錯誤,或者(更可能)我的錯...


查看完整回答
反對 回復 2019-07-25
  • 3 回答
  • 0 關注
  • 541 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號