-7

私は文字通りルールについて何をすべきか手がかりを持っていません, 私はプロローグが嫌いです, 私がしたことは、事実をリストアップしたことだけです.

本を表すには、構造化データ オブジェクトを使用します。本を説明する情報は次のとおりです。

  • 題名
  • 著者
  • ジャンル
  • ページ数

ジャンルは、{犯罪、ドラマ、コメディ、研究、フィクション、リファレンス}のいずれかである必要があります。

図書館を本のリストとして表すことができます。次の書籍セットを推奨するための一連のルールを記述します。

  • 休日(書籍は 400 ページ未満で、研究書や参考書であってはなりません)。
  • 改訂版(学習用の本または 300 ページを超える参考書)。
  • 文学的読書(ドラマ本)。
  • レジャー (コメディーまたはフィクションの本)。

事実:

  • 本(ハムレット、シェイクス、ドラマ、300)
  • book(map, osi, reference, 100)
  • 本(CSI、ジェリー、クライム、80)
  • 本(キャスター、フェレル、コメディ、200)
  • book(java, 上毛, 勉強, 400)
  • 本(聖書、イエス、フィクション、600)

ルール: ルールを実行する方法は、たとえば、最初のルールのコードが次のようになる休日の場合、すべての質問です: holidayPages(400,Y) :- book(_, _, Y),400

4

1 に答える 1

3

chac はすでに道を切り開いています。Prolog ルールの形式は次のとおりです。

Head :- Body.

頭には、化合物または原子を選択できます。本体は Prolog クエリにすることができます。クエリは基本的に次のものから構築されます。

- Invocations: Call some other rules with bound or unbound arguments
- Conditions: Unification =, Arithmetic =:=, <, etc.. Lexical @<, ==, etc..
- Connectives: And ,, Or ;, Not \+ etc..
- Everything else that is found in the handbook of your Prolog system.

ルールの口頭仕様がある場合。最初にメイン呼び出しを探し、次に条件を探し、最後に接続詞を探します。次に例を示します。

Holidays (book should be less than 400 pages and not be a study or reference book).

私は得る:

Main invocation: book(Title, Author, Genre, Pages)
Condition_1: Pages < 400
Condition_2: Genre = study
Condition_3: Genre = reference
Connectives: Condition_1, \+ (Condition_2 ; Condition_3)

これらすべてをまとめると、次の本文が得られます。これは、クエリとして最上位レベルで最初に簡単にテストできます。

?- book(Title, Author, Genere, Pages), Pages < 400, \+ (Genre = study; Genre = reference).

これで、これをルールに変えることができます。未使用の呼び出し変数にはアンダースコア (_) を使用するように注意してください。そうしないと、Prolog システムが単一の警告を表示して吠えます。

holidays(Title) :- 
     book(Title, _, Genre, Pages), 
     Pages < 400, 
     \+ (Genre = study; Genre = reference).

これは良い宿題です、あなたには良い先生がいます。楽しんで。

さよなら

于 2012-10-08T11:29:08.703 に答える