2011-08-01から1ヶ月間の記事一覧
セマンティックを利用して設計できないものか考えてみた。 セマンティックは平たく言えば、2つの物の間に関係(述語)を作ることで 主語−述語−目的語のネットワークを形成する。 主語と目的語はIDなので、主語は他の主語の目的語になることができるし 目…
コマンドライン編集の動作が微妙。 例えば、list(1,2,3,4)と入力したい場合 list()って書いてから list(1,2,3,4)の中身を埋めるように書くが、syntaxエラーになったりする。 ()だけでなく、文字列を書く際の""も同様。 十字キーの←→とかを使うと、なんかおか…
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…
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…
ここで、テキストに記載されている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…
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…
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…
テキストを写経。 先ずタプルの話。 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. 左辺の変数に、右辺の値を代入するってのは、 多値を扱…
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_…
2つのモノの間の関係性を述語で繋いでトリプルを形成して、 述語の組み合わせでルールを作成し、満たすものを見つけ出す。でも同じ処理系でも、実行するタイミングで結果が異なり 異なる処理系の場合、もちろん結果が異なる可能性がある。ロジックはルール…
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…
もう少し掘り下げてみる。 Alabamaをメインにせず、TennesseeとFloridaをメインにしてみる。 different(red, green). different(red, blue). different(green, red). different(green, blue). different(blue, red). different(blue, green). coloring(Alaba…
P.79のmap.plの例 differentという事実を定義し、coloringルールで 隣どうしの州が同じ色にならないようにする。の問題。 different(red, green). different(red, blue). different(green, red). different(green, blue). different(blue, red). different(b…
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)…