我想检查字符串中是否存在字符。Atom
字符串和字符也是如此Ch
。name
是根据 ASCII 码转换数字列表中的字符串的谓词。
find_element
X
是一个谓词,仅当元素是列表的一部分时才应该为真。C
是一个计数器,它告诉我们元素X
的确切位置。
这是我得到的结果:
?- exists(prolog,g). [103][112,114,111,108,111,103] false.
-------> 103 是字母“g”的 ASCII 码,列表[112,114,111,108,111,103]
是表示字符串“prolog”的列表。这个问题exists(prolog,g)
应该提供了一个真实的回答。
但是find_element
谓词工作正常。我不明白为什么会这样,因为当我输入例如
?- find_element(5,[3,4,5,6,5,2],X).
我得到X= 3 ; X = 5 ; false.
---->
这绝对没问题,因为它告诉我 5 是列表的第三和第五个元素。
所以问题是find_element
当我输入类似的东西时它正在工作,?- find_element(5,[3,4,5,6,5,2],X)
但当我尝试调用谓词时它不是存在的(它调用find_element
)。
这是代码:
find_element(X,[X|T],1).
find_element(X,[H|T],C):- find_element(X,T,TEMPC), C is TEMPC +1.
exists(Atom,Ch):- name(Atom,[X|T]), name(Ch,Z), write(Z), write([X|T]), find_element(Z,[X|T],Count).
提前致谢