2011-08-01から1ヶ月間の記事一覧

セマンティック(Web)を利用した設計について

セマンティックを利用して設計できないものか考えてみた。 セマンティックは平たく言えば、2つの物の間に関係(述語)を作ることで 主語−述語−目的語のネットワークを形成する。 主語と目的語はIDなので、主語は他の主語の目的語になることができるし 目…

Ioを試す。

Io

コマンドライン編集の動作が微妙。 例えば、list(1,2,3,4)と入力したい場合 list()って書いてから list(1,2,3,4)の中身を埋めるように書くが、syntaxエラーになったりする。 ()だけでなく、文字列を書く際の""も同様。 十字キーの←→とかを使うと、なんかおか…

Io(イオ)をCygwinでWindowsにインストールする

Io

http://iolanguage.com/からstevedekorte-io-2010.06.06-432-g11e1e74.zipをダウンロード 適当なディレクトリで解凍 cmakeをcygwinのインストール時に入れておく。 $ cmake -DCMAKE_INSTALL_PREFIX=/cygdrive/c/FreeSoft/Io/stevedekorte-io-11e1e74これでma…

8クイーン問題 on 7つの言語7つの世界

valid_queen((Row, Col)) :- Range = [1,2,3,4,5,6,7,8], member(Row, Range), member(Col, Range). valid_board([]). valid_board([Head|Tail]) :- valid_queen(Head), valid_board(Tail). rows([], []). rows([(Row, _)|QueensTail], [Row|RowsTail]) :- r…

数独を解く on 7つの言語7つの世界

ここで、テキストに記載されているfd_domainって組み込みの述語が、 SWI-Prologには存在しないので、GNU Prologに切り替え。 | ?- listing. sudoku(A, B) :- B = A. (16 ms) yes | ?- sudoku([1,2,3,4], Sol). Sol = [1,2,3,4] yes | ?- | ?- listing. sudok…

ルールを両方向に使う on 7つの言語7つの世界

append(List1, List2, List3)は、List3がList1 + List2のとき真になるらしい。1 ?- append([oil], [water], [oil, water]). true. 真偽を確かめる12 ?- append([oil], [water], [oil, slick]). false. 真偽を確かめる23 ?- append([tiny], [bubbles], What…

リストと数値計算 on 7つの言語7つの世界

list_math.plを読み込む。 ちなみに、ソースファイルでは以下のように記述されているが count(0, []). count(Count, [Head|Tail]) :- count(TailCount, Tail), Count is TailCount + 1. sum(0, []). sum(Total, [Head|Tail]) :- sum(Sum, Tail), Total is He…

リストとタプル on 7つの言語7つの世界

テキストを写経。 先ずタプルの話。 1 ?- (1, 2, 3) = (1, 2, 3). true.2 ?- (1, 2, 3) = (1, 2, 3, 4). false.3 ?- (1, 2, 3) = (3, 2, 1). false.4 ?- (A, B, C) = (1, 2, 3). A = 1, B = 2, C = 3. 左辺の変数に、右辺の値を代入するってのは、 多値を扱…

再帰 on 7つの言語7つの世界

father(zeb, john_boy_sr). father(john_boy_sr, john_boy_jr). ancestor(X, Y) :- father(X, Y). ancestor(X, Y) :- father(X, Z), ancestor(Z, Y). father(zeb, john_boy_sr). zebはjohn_boy_srの父親である。father(john_boy_sr, john_boy_jr). john_boy_…

prologってセマンティックWebに似てるんじゃ? on 7つの言語7つの世界

2つのモノの間の関係性を述語で繋いでトリプルを形成して、 述語の組み合わせでルールを作成し、満たすものを見つけ出す。でも同じ処理系でも、実行するタイミングで結果が異なり 異なる処理系の場合、もちろん結果が異なる可能性がある。ロジックはルール…

チト戻って on 7つの言語7つの世界

p.75のfriends.plを確認 cheeseを好きなのは誰か聞いてみる。 1 ?- listing. likes(wallace, cheese). likes(grommit, cheese). likes(wendolene, sheep). friend(A, B) :- \+ A=B, likes(A, C), likes(B, C). true. 2 ?- likes(Who, cheese). Who = wallace…

いきなりワカラン2 on 7つの言語7つの世界

もう少し掘り下げてみる。 Alabamaをメインにせず、TennesseeとFloridaをメインにしてみる。 different(red, green). different(red, blue). different(green, red). different(green, blue). different(blue, red). different(blue, green). coloring(Alaba…

いきなりワカラン。 on 7つの言語7つの世界

P.79のmap.plの例 differentという事実を定義し、coloringルールで 隣どうしの州が同じ色にならないようにする。の問題。 different(red, green). different(red, blue). different(green, red). different(green, blue). different(blue, red). different(b…

prologはじめました。 on 7つの言語7つの世界

prologをはじめました。 swi-prologで 1 ?- listing. likes(wallace, cheese). likes(grommit, cheese). likes(wendolene, sheep). friend(A, B) :- \+ A=B, likes(A, C), likes(B, C). true. 2 ?- like(wallace, sheep). Correct to: "likes(wallace,sheep)…