質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Prolog

Prologは、非手続き型プログラミング言語です。述語論理を使った論理型言語と言われており、自然言語解析や理解、推論などのAIに有効です。エキスパートシステム開発などに用いられています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

1回答

1202閲覧

prolog 記号処理について

naru08520

総合スコア0

Prolog

Prologは、非手続き型プログラミング言語です。述語論理を使った論理型言語と言われており、自然言語解析や理解、推論などのAIに有効です。エキスパートシステム開発などに用いられています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2020/06/11 12:30

編集2023/08/06 22:50

前提・実現したいこと

prologにおいて
Term ::= Alphabet | Digit | f(Term) | g(Term,Term)
Alphabet ::= a | b
Digit ::= 0 | 1
が定義されているとき,与えられたアトム A が与えられた項 Term に出現するかど うかを判定する述語 ocr_check(A,Term) のプログラムを作成したいです

発生している問題・エラーメッセージ

ocr_check(a,f(g(b,f(a))))を与えた時、falseとなりうまくできません。
どのように改良すればよいでしょうか?

該当のソースコード

prolog

1alphabet(a). 2alphabet(b). 3 4digit(0). 5digit(1). 6 7 8ocr_check(A,A). 9ocr_check(A,f(T1)):-ocr_check(A,T1). 10ocr_check(A,g(T2,T3)):-ocr_check(A,T2),ocr_check(A,T3). 11

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

and条件をor条件に変更する

最後の節の副目標が,で区切られているのでand条件。すべての副目標が成立しなければなりません。ocr_check(a,g(a,f(a))).は trueですがocr_check(a,g(b,f(a))). はfalseです。

prolog

1ocr_check(A,g(T2,T3)):-ocr_check(A,T2),ocr_check(A,T3).

言語仕様上はor。そこで二つに分割してorが成り立つようにします。

prolog

1ocr_check(A,g(T2,_)):-ocr_check(A,T2). 2ocr_check(A,g(_,T3)):-ocr_check(A,T3).

投稿2023/08/06 13:50

xebme

総合スコア1081

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問