またしても、不思議なことをしてみました。
今回解かせたのは、
http://www.geocities.jp/m_hiroi/prolog/prolog01.html#chap4
こちらのウェブサイトで紹介されている、「家系図」の問題。
ダウンロードに関して
ソースコード: https://github.com/mimura1133/mm_Prolog_for_Excel
バイナリ:http://mimumimu.net/beta/programs/PrologExcel.zip
コードの紹介は今回は割愛しますが、
導入の方法について、かなり変態的なので紹介します。
導入編。
ファイルを展開すると、このようなファイルが入っています。
この中から、 install.bat を探し、右クリック –> 管理者として実行
実行したら、 Excel を立ち上げます。
ファイルメニュー内の「オプション」をクリック
開いたダイアログから、「アドイン」を選び、
一番下の管理について、「Excel アドイン」を選んで、「設定」を押します。
そして、オートメーションをクリック。
中から、PrologExcel.PrologExcel を選んで、OK を押す。
PrologExcel.PrologExcel が追加されるので、チェックを付けて OK を押す。
利用編
このアドインには大きく2つの関数があります。
1.Prolog_List 関数
Prolog_List()
Input : Excel List
Output: Prolog List
この関数は、
male | taro |
male | ichiro |
male | jiro |
male | saburo |
というような一覧が存在したとき、
male(taro).
male(ichiro).
male(jiro).
male(saburo).
このような、Prolog のリスト形式に変換してくれます。
また、下記のように、いくつもリストがある場合、
特に難しい事はしていませんので、 Excel の通常の文字列結合同様、
「&」マークで結合すれば問題ありません。
2.Prolog 関数
Prolog()
Input : Program, Query
Output : Answer
第一引数に、リスト定義などを与え、
第二引数に、クエリを与えます。
クエリを投げる際は、
:- parents_of(X, ichiro).
のように、「?-」 ではなく、「:-」として投げるようです。
(・・私は Prolog を使う人じゃ無いのでよく分かりません・・。)
なお、この関数が実行される際、多少ラグが発生するのでご了承下さい。
とりあえず、こんな感じで。であであ。