このディレクトリの索引

% 以下のサイトは # # ある専門学校の受験資格のデシジョンテーブル # # <条件> 1 2 3 4 5 6 7 8 # # 体重が軽い N N N N Y Y Y Y # 体が柔らかい N N Y Y N Y N Y # 敏捷である N Y Y N N N Y Y # # <行動> # # 受験資格がある X # 受験資格がない X X X X X X X 体重が軽い(偽,偽,偽,偽,真,真,真,真). 体が柔らかい(偽,偽,真,真,偽,真,偽,真). 敏捷である(偽,真,真,偽,偽,偽,真,真). 受験(諦める,諦める,ダイエットして来年受験する,諦める,諦める,諦める,ヨガに一年通ってから受験する,受験してみる). デシジョンテーブル(_アリティ,_条件述語名ならび,_真偽値ならび,_行動述語名ならび,_選択列,_行動ならび) :- デシジョンテーブル(_アリティ,_条件述語名ならび,_真偽値ならび,_選択列), findall(_行動,( '行動述語の_選択列引数を得る'(_アリティ,_選択列,_行動述語名ならび,_行動)), _行動ならび). デシジョンテーブル(_,[],_,_選択列). デシジョンテーブル(_アリティ,[_述語名|R1],[_真偽値|R2],_選択列) :- 条件述語を実行する(_アリティ,_述語名,_真偽値ならび), nth1(_選択列,_真偽値ならび,_真偽値), デシジョンテーブル(_アリティ,R1,R2,_選択列). 条件述語を実行する(_アリティ,_述語名,_真偽値ならび) :- length(_真偽値ならび,_アリティ), P =.. [_述語名|_真偽値ならび], call(P). '行動述語の_選択列引数を得る'(_アリティ,_選択列,_行動述語名ならび,_行動) :- member(_行動述語名,_行動述語名ならび), 行動述語名の行動ならびを得る(_アリティ,_行動述語名,_行動選択ならび), nth1(_選択列,_行動選択ならび,_行動). 行動述語名の行動選択ならびを得る(_アリティ,_行動述語名,_行動選択ならび) :- length(_行動選択ならび,_アリティ), P =.. [_行動述語名|_行動選択ならび], call(P). % % ?- デシジョンテーブル(8,[体重が軽い,体が柔らかい,敏捷である],[真,偽,真],[受験],_選択列,_行動ならび). % % _選択列 = 7, % _行動ならび = [ヨガに一年通ってから受験する] % % 以下のサイトは # 出典 :: Qiita_47443e0fb2988c1332b2 表(1,×,×,×,×,×). 表(2,×,×,×,○,×). 表(3,×,×,○,×,×). 表(4,×,○,×,×,×). 表(5,×,×,○,○,○). 表(6,×,○,○,×,×). 表(7,×,○,×,○,○). 表(8,×,○,○,○,○). 表(9,○,×,×,×,×). 表(10,○,×,×,○,×). 表(11,○,×,○,×,○). 表(12,○,○,×,×,○). 表(13,○,×,○,○,○). 表(14,○,○,○,×,○). 表(15,○,○,×,○,○). 表(16,○,○,○,○,○). 結婚できるか(_結婚できるか) :- findall(_項目の判定,聞き取り(_項目の判定),[_年収,_身長,_学歴,_親が資産家]), 結婚できるか(_年収,_身長,_学歴,_親が資産家,_結婚できるか). 聞き取り項目(年収,年収). 聞き取り項目(身長,身長). 聞き取り項目(学歴,学歴). 聞き取り項目(親の資産額,親が資産家). 聞き取り(_項目の判定) :- 聞き取り項目の値を得る(_項目,_値), 項目の判定(_項目,_値,_項目の判定). 聞き取り項目の値を得る(_項目,_値) :- 聞き取り項目(_質問,_項目), writef('%t : ',[_質問]), 行入力(_値). 項目の判定(_項目,_値,_項目の判定) :- P =.. [_項目,_値,_項目の判定], call(P). 年収(_年収文字列,○) :- 年収が10000000円以上(_年収文字列),!. 年収(_,×). 年収が10000000円以上(_年収文字列) :- atom_number(_年収文字列,_年収), _年収 >= 10000000. 親が資産家(_資産額文字列,○) :- 親の資産が10000000円以上(_資産額文字列),!. 親が資産家(_,×). 親の資産が10000000円以上(_資産額文字列) :- atom_number(_資産額文字列,_資産額), _資産額 >= 100000000. 身長(_身長文字列,○) :- 身長が180cm以上(_身長文字列),!. 身長(_,×). 身長が180cm以上(_身長文字列) :- atom_number(_身長文字列,_身長), _身長 >= 180. 学歴(_学歴,○) :- 最終学歴の偏差値が65以上(_学歴),!. 学歴(_学歴,×). 最終学歴の偏差値が65以上(_大学卒) :- 入試時点の偏差値(_大学卒,_偏差値), _偏差値 >= 65. 入試時点の偏差値(南河内大学,71). 入試時点の偏差値(私立東京未来大学,62). 結婚できるか(_年収,_身長,_学歴,_親が資産家,結婚できる) :- 表(_,_年収,_身長,_学歴,_親が資産家,○). 結婚できるか(_年収,_身長,_学歴,_親が資産家,結婚できない) :- 表(_,_年収,_身長,_学歴,_親が資産家,×). 行入力(_行文字列) :- 行入力文字ならびを得る(_行入力文字ならび), atom_chars(_行文字列,_行入力文字ならび). 行入力文字ならびを得る(_行入力文字ならび) :- findall(_文字,(文字入力(_文字),(行入力終了(_文字),!,fail;true)),_行入力文字ならび). 文字入力(end_of_file) :- at_end_of_stream(user_input). 文字入力(_文字) :- get_char(_文字). 文字入力(_文字) :- 文字入力(_文字). 行入力終了(end_of_file). 行入力終了('\n'). % 以下のサイトは # # ある専門学校の受験資格のデシジョンテーブル # # <条件> 1 2 3 4 5 6 7 8 # # 体重が軽い N N N N Y Y Y Y # 体が柔らかい N N Y Y N Y N Y # 敏捷である N Y Y N N N Y Y # # <行動> # # 受験資格がある X # 受験資格がない X X X X X X X 体重が軽い(偽,偽,偽,偽,真,真,真,真). 体が柔らかい(偽,偽,真,真,偽,真,偽,真). 敏捷である(偽,真,真,偽,偽,偽,真,真). 受験資格がある(偽,偽,偽,偽,偽,偽,偽,真). 受験資格がない(真,真,真,真,真,真,真,偽). デシジョンテーブル(_アリティ,_条件述語名ならび,_真偽値ならび,_行動述語名ならび,_nth1,_行動ならび) :- デシジョンテーブル引数を取得して転置する(_アリティ,_条件述語名ならび,LL2), nth1(_nth1,LL2,_真偽値ならび), 行動述語から行動ならびを得る(_アリティ,_nth1,_行動述語名ならび,_行動ならび). デシジョンテーブル引数を取得して転置する(_アリティ,_条件述語名ならび,LL2) :- findall(_引数ならび,( member(_条件述語名,_条件述語名ならび), length(_引数ならび,_アリティ), P =.. [_条件述語名|_引数ならび], call(P)), LL2), 転置(LL1,LL2), 行動述語から行動ならびを得る(_アリティ,_nth1,_行動述語名ならび,_行動ならび) :- findall(_行動,( '行動述語の_nth1引数を得る'(_アリティ,_nth1,_行動述語名ならび,_行動)), _行動ならび). '行動述語の_nth1引数を得る'(_アリティ,_nth1,_行動述語名ならび,_行動) :- member(_行動述語名,_行動述語名ならび), length(L,_アリティ), P =.. [_行動述語名|L], call(P), nth1(_nth1,L,_行動). % % ?- デシジョンテーブル(8,[体重が軽い,体が柔らかい,敏捷である],[真,偽,真],[受験資格がある],_nth1,_行動ならび). % % _nth1 = 7, % _行動ならび = [偽] % % 以下のサイトは # # ある専門学校の受験資格のデシジョンテーブル # # <条件> 1 2 3 4 5 6 7 8 # # 体重が軽い N N N N Y Y Y Y # 体が柔らかい N N Y Y N Y N Y # 敏捷である N Y Y N N N Y Y # # <行動> # # 受験資格がある X # 受験資格がない X X X X X X X 体重が軽い(偽,偽,偽,偽,真,真,真,真). 体が柔らかい(偽,偽,真,真,偽,真,偽,真). 敏捷である(偽,真,真,偽,偽,偽,真,真). 受験(諦める,諦める,ダイエットして来年受験する,諦める,諦める,諦める,ヨガに一年通ってから受験する,受験してみる). デシジョンテーブル(_アリティ,_条件述語名ならび,_真偽値ならび,_行動述語名ならび,_選択列,_行動ならび) :- デシジョンテーブル(_アリティ,_条件述語名ならび,_真偽値ならび,_選択列), findall(_行動,( '行動述語の_選択列引数を得る'(_アリティ,_選択列,_行動述語名ならび,_行動)), _行動ならび). デシジョンテーブル(_,[],_,_選択列). デシジョンテーブル(_アリティ,[_述語名|R1],[_真偽値|R2],_選択列) :- 条件述語を実行する(_アリティ,_述語名,_真偽値ならび), nth1(_選択列,_真偽値ならび,_真偽値), デシジョンテーブル(_アリティ,R1,R2,_選択列). 条件述語を実行する(_アリティ,_述語名,_真偽値ならび) :- length(_真偽値ならび,_アリティ), P =.. [_述語名|_真偽値ならび], call(P). '行動述語の_選択列引数を得る'(_アリティ,_選択列,_行動述語名ならび,_行動) :- member(_行動述語名,_行動述語名ならび), 行動述語名の行動ならびを得る(_アリティ,_行動述語名,_行動選択ならび), nth1(_選択列,_行動選択ならび,_行動). 行動述語名の行動選択ならびを得る(_アリティ,_行動述語名,_行動選択ならび) :- length(_行動選択ならび,_アリティ), P =.. [_行動述語名|_行動選択ならび], call(P). % % ?- デシジョンテーブル(8,[体重が軽い,体が柔らかい,敏捷である],[真,偽,真],[受験],_選択列,_行動ならび). % % _選択列 = 7, % _行動ならび = [ヨガに一年通ってから受験する] %