文字列に文字が含まれているかどうかを確認したい。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はリストの3番目と5番目の要素であることがわかるので、これは絶対に問題ありません。
したがって、問題は、次のfind_element
ように入力すると機能する?- find_element(5,[3,4,5,6,5,2],X)
ことですが、述語exists(を呼び出す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).
前もって感謝します