私は非常にプロローグの新人です。 SWI-prologでswiplを使用しています。Prolog:文字列の最初と最後の文字が左右の角かっこ( '{'& '}')であることを確認する
私は、文字列が波線左ブラケット(で始まるかどうかを確認したい「{」)と右の波線ブラケットで終わる(「}」}
私がオンライン読んでいるいくつかのanswersは、プログラムに私をリードしてきました
start_left_squiggle([Letter|_]):-
Letter = '{'.
。文字列は左波線ブラケットで始まるかどうかを確認するために私の知識ベースに次のしかし、私はこの関数を実行したとき、私はそれがtrueを返すことを期待するとき、私は、偽得る。
?- start_left_squiggle('{hello').
false.
また、answersは、最後の文字が括弧で囲まれているかどうかをチェックするのに正しいと思われます。
last_char(str, X):-
name(S, N),
reverse(N, [F|_]),
name(X, [F]).
end_right_squiggle(Werd):-
last_char(Werd, Last),
Last = '}'.
また、関数を実行しているときに、関数がtrueを返すと期待したときに、再びfalseになります。あなたがする必要がある
?- end_right_squiggle('hello}').
false.
' 'こんにちは}' あなたはfalseを取得する必要がありますので、'ここにあなたが初めと終わりに2波括弧を持っていません。 –
@LuaiGhunim私は2つの機能を別々にテストしています。最初の関数は、文字列が '{'で始まる場合はtrueを返し、2番目の関数は文字列が '}'で終わる場合はtrueを返す必要があります。文字列の終わりは、最初の関数とは無関係で、文字列の始まりは2番目の関数とは無関係です。 – Jacob
簡単な方法は、文字列をリストに変換し、さらに操作を実行することです。 –