- 第0回:
- 講義+演習の進め方説明
- レポート出題
- SWI-Prologの起動確認
- 第1回:
- 講義(導入,テキスト1章 Prologの概観,テキスト2章 Prologプログラムの構文と意味)
- レポート出題
- 練習1.2 (教科書p.6)
- 練習1.5 (教科書p.12)
- 練習1.6 (教科書p.18)
- 練習2.1 (教科書p.34)
- 練習2.3 (教科書p.40)
- 練習2.5 (教科書p.40)
注意事項
- プログラムを作成する問題については,実際にプログラムを実行し動作例をいくつか挙げて考察する
こと.
- 考察は問題毎に行いましょう.
- レポートはそのまま実行できる形で提出して下さい.(考察などの文章,実行結果等はコメントアウト
する)(テンプレート)
課題 rep01::提出〆切 2024年04月22日 17時
練習1.2 (教科書p.6) parent関係に関する次の質問をPrologで表せ.
a) Patの親は誰か.
b) Lizは子どもをもつか.
c) Patの祖父母は誰か
練習1.5 (教科書p.12) parentとsisterという関係を用いてaunt(X,Y)を定義せよ.
ヒント: aunt関係に対して図1.3の形式のグラフを書くと分かりやすい.
練習1.6 (教科書p.18) 次に示すもう1つのpredecessor関係の定義について考察せよ.
predecessor2(X,Z) :-
parent(X,Z).
predecessor2(X,Z) :-
parent(Y,Z),
predecessor2(X,Y).
ヒント:
これもpredecessorの適切な定義と思えるだろうか.
図1.7のグラフを修正してこの新しい定義とそのグラフが対応するようにできるだろうか.
- ※注意事項:
- 図1.8の例題を参照して演習を行うこと
- SWI-Prologにはdifferentは定義されていないため,図1.8の例題
プログラムに加えて以下のルールを追加すること.
different(X,Y) :- X \== Y.
- 練習1.6 では 図1.8の例題と述語名を変更すること
(例) predecessor => predecessor2
問題2.1 (教科書p.34)
次のどれが構文的に正しいPrologオブジェクトであるか.
それらはどんな種類のオブジェクト(アトム,数,変数,構造)か.
- (a)Diana
- (b)diana
- (c)'Diana'
- (d)_diana
- (e)'Diana goes south'
- (f)goes(diana,south)
- (g)45
- (h)5(X,Y)
- (i)+(north,west)
- (j)three(Black(Cats))
問題2.3 (教科書p.40)
次のマッチング操作は成功するか失敗するか.
成功するなら,結果としてどのような変数の変数の具体化が得られるか.
- (a)point(A,B)=point(1,2)
- (b)point(A,B)=point(X,Y,Z)
- (c)plus(2,2)=4
- (d)+(2,D)=+(E,2)
- (e)triangle(point(-1,0),P2,P3)=triangle(P1,point(1,0),point(0,Y))
この結果得られる具体化は三角形のあるクラスを定義する.この三角形がどのようなものかを記述せよ.
問題2.5 (教科書p.40)
矩形がrectangle(P1,P2,P3,P4)という項で表現されていると仮定せよ.
ただしPは矩形の頂点で,正方向に順序づけられているとする.
Rが水平と垂直な辺をもった矩形である場合に真となる関係
- regular(R)
を定義せよ.
- 注意:
- レポートは出題された問題すべてをまとめて1通のメールで提出すること.複数回に分けた場合,上書きされて最後の送信のみが有効となる.
- また,traceを用いて実行過程の追跡を行うこと.こちらを参照
- レポートは,電子メールでのみ提出することが出来ます.
レポートの提出先メールアドレスはです.
- メールのサブジェクトは指示通り,半角でrepXX (XXは回数,例えば第一回目ならrep01) とすること.
-
(初回は特に)学籍番号と氏名は間違えないように記入をお願いします.
- 解説/考察,実行結果の部分は全てコメントアウトとし,メールのヘッダを取り除いたものが,実行可能となるように作成すること.
- 二度同じサブジェクトでレポートを提出すると上書きされ,先に提出したものは失われます.(必ず,控えを残しておいて下さい)
- メールの形式は html形式ではなく,テキスト形式
で送信すること.特に,エディタ等からコピー&ペーストする際は,先にメーラー側で「プレーンテキストに切り替える」設定を行い,その後ペーストしないと,正しく受信されないことがあります.
- 正常に受理された場合はその旨が記載された自動返信メールが送信されます.提出後にはレポート提出状況と併せて返信メールを確認すること.
- 誤ったサブジェクトのメールは送り返されますが,誤って過去のレポート番号で送った場合は,そのレポートが失われます.
- 演習に関する質問は,レポート提出用のアドレスには送らないこと.(repXX のサブジェクトでメールを送ると,レポートとして受理されます.質問などは,へ出すこと)
- 必ず情報基盤センター学生メールのアカウント(@stn.nitech.ac.jp)から提出すること.(研究室,プロバイダ等の アカウントからの提出は受理されません)
- ピリオド(.) だけの行をレポート途中に入れると,返信メールでのレポート内容がそこで途切れてしまいます.ただし,受理されたレポートの方は途切れていませんので心配無用です.
- レポートの書き方は,こちらを参考に,正しく分かり易いレポートを心がけること.(テンプレートファイル)