1

Xが10進数Yのローマ数字である場合に真となるプロローグ述語数字(X、Y)を定義しようとしています。

numerals(X,Y) :- X is ('M'), Y>=1000.
numerals(X,Y) :- X is  ('CM'), Y>=900.
numerals(X,Y) :- X is  ('D'), Y>=500.
numerals(X,Y) :- X is  ('CD'), Y>=400.
numerals(X,Y) :- X is  ('C'), Y>=100.
.
.
.
.

コードを実行すると、次のエラーが発生します。

?-numerals(M,1001).
ERROR: toplevel: Undefined procedure: numerals/2 (DWIM could not correct goal)
4

2 に答える 2

1

プログラムをロードしていません。これを見てみてください-それ以外の場合は、私の最初の返信listingを参照してください。

于 2012-11-07T12:47:13.460 に答える
1

Prolog は、生成してからテストすることに基づいています。両方の部分の順序が重要です。何をテストし、何を生成したいですか?

また、「is」を使用してもよろしいですか。これは算術演算用です。

最後に、依存関係のないルールを書くつもりですか? 再帰アルゴリズムを使用するのはおそらく良い考えです...そうしないと、可能な数のルールを作成する必要があります。

于 2012-11-07T12:49:25.370 に答える