gpt4 book ai didi

prolog - 检查 List 中是否有任何元素以特定字符开头

转载 作者:行者123 更新时间:2023-12-02 06:36:01 25 4
gpt4 key购买 nike

我有一个单词列表,例如 [cola,fanta,pepsi],我想编写一个谓词来检查是否有任何元素以指定的字符开头。

到目前为止我的代码如下:

chk_first_letter(Char,[]):-fail.
chk_first_letter(Char, [H|T]):-
perform_check(Char, H);
chk_first_letter(Char, T).
perform_check(Char,[First|_]):-memberchk(Char, First).

然而,即使百事可乐以 p 开头,查阅我的文件并调用 chk_first_letter(p,[cola,fanta,pepsi]) 也没有给我答案。

我试过使用 Char==First 而不是 memberchk(Char,First) 但它也没有用。我不确定其中的区别。

最佳答案

你有一个原子列表,你的 perform_check/2 比较两个原子。原子不是字符列表!你需要使用原子处理,例如:

perform_check(First, Word) :-
sub_atom(Word, 0, 1, _After, First).

http://gprolog.univ-paris1.fr/manual/html_node/gprolog043.html#sec200

本节中还有许多其他内置函数可以使用,例如将原子分解为字符或字符代码(atom_chars/2atom_codes/2)。但是 sub_atom/5 还可以让您轻松做到:

任意长度的前缀:

sub_atom(Word, 0, _Length, _After, Prefix).

后缀:

sub_atom(Word, _Before, _Length, 0, Suffix).

关于prolog - 检查 List 中是否有任何元素以特定字符开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18894153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com