ついて、数学的な概念の説明を省いて概要を説明し、ごく簡単な文法だけを用いて魔方陣のパズルの解を得るプログラムを作ります。7つの世界」という本が面白いと聞いて、早速買って読んでみました。あったのですが、それまで手続き型言語しか書いたことのなかった私は、この言語がアルゴリズムを書かないというところに、衝撃を受けました。よって開発された論理型言語で、数学や自然言語処理の分野で使われています。LOGique」だそうです。手続き型言語のように「あれやって、これやって、こうやって答えを出してね!」といったコードは書きません。ある問題に対して、答えの定義を「◯◯は××である」という形で並べていき、最後に「□□の条件を満たす△△は?」とプログラムに質問し、解を得るのです。定義を並べていくあたり、論理型言語が宣言型言語に分類されているのも分かる気がします。アクセスしてみると、次のような画面が出てきます。ここで、「Program」ボタンをクリックすると、次のような画面になります。左側はコード記述欄、右下は質問欄となります。これで準備ができました。プログラムは「事実」と「ルール」で構成され、プログラムを実行し、「質問」することによって、ある問題に対する解を得ます。それぞれについて説明していきます。事実とは、いわゆる「◯◯は××である」といった事柄です。「たまねぎは野菜である」なら次のように書きます。1つの定義は「.」で終わります。「food_category」の部分は、事実やルールを識別する名前です。同じ名前で複数定義することもできます。vegetable)」の部分は、事実の内容となります。小文字で始まる単語はアトム(プログラム中の固有の識別子)です。イメージしづらいですが、ここでは前述のとおり、「たまねぎは野菜である」くらいに覚えておいてください。ルールルールとは、「◯◯なら××である」というような推論です。「指定された2つの食べ物が共に野菜であり、かつ異なる種類であれば野菜サラダである」なら次のように書きます。Y.ルールは、「事実」と「ルール」を組み合わせることができ、「:-」の右側に、そのルールが成立する条件(「サブゴール」といいます)を書いていきます。「\==」は右辺と左辺が等しくないという演算子です。等の大文字で始まる文字や、「_」で始まる単語は変数です。「指定された2つの食べ物が共に野菜であり、かつ異なる種類であれば野菜サラダである」と覚えておいてください。質問とは、定義した事実とルールに照らし合わせて、プログラムに問い合わせたい事柄のことです。定義された事実とルールに基づき、質問に対して肯定または否定で答えてくれます。「たまねぎは野菜ですか?」と尋ねてみましょう。コード記述欄に次のコードを記述します。指定された2つの食べ物が共に野菜であり、かつ異なる種類であれば野菜サラダであると記述しました。右下に次のように質問を記述し、「Run!」ボタンをクリックします。vegetable).右側に回答用の小さなペインが現れ、「true」と表示されました。事実として「たまねぎは野菜である」と定義しているので、肯定で返ってきたのです。次はルールのほうで質問してみます。「たまねぎとにんじんの組み合わせは野菜サラダですか?」と尋ねてみます。carrot).やはり「true」と表示されました。続いて、「たまねぎとトマトの組み合わせは野菜サラダですか?」と尋ねてみます。tomato).今度は「false」が返ってきました。「トマトは野菜である」という事実またはルールがないため、否定で返ってきたというわけです。つの項が等しくなるように解を補完することをいいます。補完し、解を求めます。これがユニフィケーションです。ユニフィケーションを使ってる感がでるように、今度はもう少し複雑な質問をしてみましょう。先ほどは「たまねぎとにんじんの組み合わせは野菜サラダですか?」と質問しましたが、次は「食べ物の種類が野菜である食べ物はどれですか?」と質問します。次の事実とルールを記述します。Y.このコードの中に、「食べ物の種類が野菜である食べ物を求める」コードはどこにもありません。vegetable).すると、次のような答えが返ってきます。質問をすると答えが肯定になるようにユニフィケーションを用いて変数を推測します。これにより、プログラマがアルゴリズムを書かずとも、プログラムが推論を駆使して解を探し出してくれるのです。変数は複数でもいけます。Food2).と質問すると、というように、すべての野菜サラダの組み合わせを得ることができます。面倒な途中計算はすべてプログラムがやってくれます。プログラマは、あるルールを満たす条件を定義していくだけです。魔方陣を作るここまでで事実、ルール、質問、そしてユニフィケーションについてご紹介しました。魔方陣を作ってみたいと思います。魔方陣とはみなさん知ってるかと思いますが、魔方陣の特徴は次のようなものです。あるこういうやつですね。