人工智慧版-語法討論

貼文者 : : 天步

人工智慧版-語法討論 - 2005-04-19 22:34:06

 此人工智慧版的語法,採用prolog語言,雖然簡單,但對未接觸的網友而言,可能還是會有些問題,因此新闢此議題,讓同好共同來研究此語法.
貼文者 : : 天步

人工智慧-取資料顯示 - 2005-04-19 23:07:28

程式內有很多星盤資料,先舉例顯示姓名及性別,紅色為實際程式,語法如下:

% 範例:顯示姓名及性別資料.
顯示姓名:-姓名(X),顯示(['姓名:',X]),換行.
顯示性別:-性別(X),顯示(['性別:',X]),換行.

run:-$顯示姓名,$顯示性別.

% 結果
姓名:李小龍
性別:男

從上面可見,每一函式,皆以句點當結尾.
語法:函式名稱:-函式,函式...
結構:由函式名稱,符號":-",函式,逗點,句點等構成,而由":-"做為定義的符號.

以上範例,
X代表未知數,將由姓名函式及性別函式取出資料填入X中.
而函式"顯示(['姓名:',X])",以逗點區分為兩項資料,依序將"姓名:"及X顯示出來.
換行,即換下一行顯示.
最後run為特定函式,是執行的意思.
貼文者 : : 天步

Re: 人工智慧版-數學運算(含圖片) - 2005-04-23 00:34:41

 程式中免不了有數值當然就有運算及比較,語法提供為整數的運算,其中更加上行星的交角符號(~),可計算兩星的交角,如(日~月)表示日月的交角,若等於0為朔,若等於180則為望,簡單吧!

貼文者 : : 天步

Re: 人工智慧-取本命星資料 - 2005-04-24 10:10:28

星(V1,V2,V3,V4,V5,V6)

函式說明:取得本命星資料
V1: 星名稱    ,如 日,月,水,金,火,木,土,羅,計,孛,气,天,海,冥
V2: 躔二十八宿名稱,如 張,翼,軫,角,亢,..,昂,畢,觜,參,井,鬼,柳,星
V3: 躔二十八宿度數,如 0..29
V4: 居十二宮位名稱,如 子,丑,寅,卯,辰,巳,午,位,申,酉,戌,亥
V5: 居十二宮位度數,如 0..29
V6: 入十二宮名稱 ,如 命,財,兄,田,奴,妻,疾,遷,官,福,相

範例說明:
% 範例:顯示本命月亮資料,假如星盤為月亮躔柳07,居未24,入奴僕宮
run:-星(月,X2,X3,X4,X5,X6),顯示(['月亮:',X2,X3,X4,X5,X6]).
% 結果:
月亮:柳7未24奴

% 範例:判斷月躔柳宿,以星(月,柳,_,_,_,_)為條件,比對本命月亮資料,若符合條件則顯示
run:-星(月,柳,_,_,_,_),顯示(['命主月躔柳宿,喜讀書.'] ).
% 結果:
命主月躔柳宿,喜讀書.
貼文者 : : 天步

Re: 人工智慧版-繁雜的神煞 - 2005-04-24 16:13:07

 果老星宗的神煞非常多,因此有人主張應簡化,甚至欲去之而快,但天步覺得神煞有其神驗之處,不能因為繁雜就全盤否定,若能好好應用,盤象就越發明顯.

神煞( V1 , V2 , V3 )

函式說明: 神煞資料

V1: 神煞名稱   ,如 祿勳,陽刃,飛刃,唐符...
V2: 居十二宮位名稱,如 子,丑,寅,卯,辰,巳,午,位,申,酉,戌,亥
V3: 所掌之星的名稱,如 日,月,水,金,火,木,土

內訂神煞名稱: 含十二長生

帝旺 臨官 冠帶 沐浴 長生 養 胎 絕 墓 死 病  衰 
祿勳 陽刃 飛刃 唐符 國印 天貴 玉貴 文昌 天廚 歲殿
歲駕 劍鋒 天空 地雌 貫索 勾神 年符 小耗 大耗 闌干
天厄 死符 伏屍 天雄 卷舌 絞殺 天狗 病符 陌越 的殺
咸池 大殺 孤辰 寡宿 三刑 驛馬 六害 華蓋 劫殺 亡神
空亡 孤虛 紅鸞 天喜 血刃 浮沉 天哭 披頭 黃旛 豹尾
擎天 遊奕 月簾 月殺 天耗 地耗 月符 注受 斗杓 卦氣


範例說明:

% 範例: 判斷年符或月符是否臨身宮或命宮,假如星盤為土掌月符入辰福德宮,月亦居辰宮.
論官:-神煞(年符,_,X),星(X,_,_,Y,_,命),顯示(['年符臨命,獄訟博戲.']).
論官:-神煞(月符,_,X),星(X,_,_,Y,_,命),顯示(['月符臨命,獄訟博戲.']).
論官:-神煞(年符,_,X),星(X,_,_,Y,_,_),星(月,_,_,Y,_,_),顯示(['年符臨身,獄訟博戲.']).
論官:-神煞(月符,_,X),星(X,_,_,Y,_,_),星(月,_,_,Y,_,_),顯示(['月符臨身,獄訟博戲.']).
run:-論官.

% 結果: 比對四個論官規則,只有第四條 神煞(月符,_,土),星(土,_,_,辰,_,_),星(月,_,_,辰,_,_) 符合星盤資料,故顯示如下.
月符臨身,獄訟博戲.


% 範例: 亦可用或(;)的功能,結合上述規則
run:-(神煞(年符,_,X);神煞(月符,_,X)),星(X,_,_,Y,_,Z),(星(月,_,_,Y,_,_);Z== 命),顯示(['年月符臨身命,獄訟損己,博戲亡家.']).
% 結果: 將命盤資料套入規則,分析其真假值得 (神煞(年符,_,X);神煞(月符,_,土)),星(土,_,_,辰,_,福),(星(月,_,_,辰,_,_);福== 命) => (假或真)且真且(真或假) => 真且真且真 => 真,故顯示如下.
年月符臨身命,獄訟損己,博戲亡家.
貼文者 : : Puka2000

Re: 人工智慧版-繁雜的神煞 - 2005-04-24 16:30:52

回應:

果老星宗的神煞非常多,因此有人主張應簡化,甚至欲去之而快,但天步覺得神煞有其神驗之處,不能因為繁雜就全盤否定,若能好好應用,盤象就越發明顯.



神煞之別的確有其效驗
只是異名同星的太多了~
我還是覺得應該簡化一下
我程式內就把同一神煞不同名稱的都只寫一個~
這樣看起來比較不花
呵呵...
貼文者 : : 天步

人工智慧版-使用說明v1.0 - 2005-05-08 20:50:10

人工智慧版-使用說明v1.0已完成,並寄給訂購的網友,若有語法上的問題,歡迎在此討論。
貼文者 : : 天步

代貼:程式如何撰寫?(流木) - 2005-07-01 23:41:46

代貼網友E-mail提問:
想問程式如何撰寫,我想寫流木沖或刑或合或會本命星,應如何寫?
貼文者 : : 天步

Re: 代貼:程式如何撰寫?(流木) - 2005-07-02 00:14:09

刑沖會合的定義有兩種:
西洋:
會: 0度
刑: 90度
合:120度
沖:180度

政餘:
會:同宮
刑:四正宮
合:拱宮
沖:對宮

此處討論政餘的方式,先考慮可取用的內訂函式:
1.星( V1 , V2 , V3 , V4 , V5 , V6 )
2.流年星( V1 , V2 , V3 , V4 , V5 , V6 )
3.對宮( V1 , V2 )
4.拱宮( V1 , V2 )

內訂函式沒有同宮及四正宮,那就自己訂立吧:

%同宮:參數相同即可

%四正宮:定義全部的組合即可
四正宮(子,卯).
四正宮(子,酉).
四正宮(丑,辰).
四正宮(丑,戌).
...
四正宮(戌,丑).
四正宮(戌,未).
四正宮(亥,寅).
四正宮(亥,申).

%設計交角,流木刑沖會合的規則
交角:-星(S1,_,_,V1,_,_),流年星(木,_,_,V1,_,_),顯示(['流木','會',S1]),換行.
交角:-星(S1,_,_,V1,_,_),流年星(木,_,_,V2,_,_),四正宮(V1,V2),顯示(['流木','刑',S1]),換行.
交角:-星(S1,_,_,V1,_,_),流年星(木,_,_,V2,_,_),拱宮(V1,V2),顯示(['流木','合',S1]),換行.
交角:-星(S1,_,_,V1,_,_),流年星(木,_,_,V2,_,_),對宮(V1,V2),顯示(['流木','沖',S1]),換行.

流木刑沖會合:-交角,多解.

%執行
run:-流木刑沖會合.

以上程式我沒實際測試,可能有錯,您可自行測試.
貼文者 : : 天步

請問如果想一次撰寫 - 2005-07-03 11:39:20

代貼:
回應:


謝謝你的回覆

請問如果想一次撰寫
1)流星入本命,大限,流年,小限何宮
2)流星入本命,大限,流年,小限是何宮主,度主
3)流星入沖刑會合何星(本命星及流年星)
4)流星入沖刑會合何宮主,度主(本命星及流年星)

這又如何寫呢?

你的例子是有,但分散了,很難結合.



貼文者 : : 天步

Re: 請問如果想一次撰寫 - 2005-07-03 12:07:02

欲取得宮主星,就需引用內訂函示" 宮(V1,V2,V3) ".

欲顯示所有流星的交角,就以大寫字母參數替代原先指定的流木.

先試解"流星入沖刑會合何星(本命星及流年星)","流星入沖刑會合何宮主,度主(本命星及流年星)",範例如下:

%本命星vs本命星宮主
本命交角:-星(S1,_,_,V1,_,_),星(S2,_,_,V1,_,_),宮(H1,_,S1),顯示([S2,'會',H1,'宮主',S1]),換行.

本命交角:-星(S1,_,_,V1,_,_),星(S2,_,_,V2,_,_),四正宮(V1,V2),宮(H1,_,S1),顯示([S2,'刑',H1,'宮主',S1]),換行,多解.

本命交角:-星(S1,_,_,V1,_,_),星(S2,_,_,V2,_,_),拱宮(V1,V2),宮(H1,_,S1),顯示([S2,'合',H1,'宮主',S1]),換行,多解.

本命交角:-星(S1,_,_,V1,_,_),星(S2,_,_,V2,_,_),對宮(V1,V2),宮(H1,_,S1),顯示([S2,'沖',H1,'宮主',S1]),換行,多解.


%流年星vs本命星宮主
交角:-星(S1,_,_,V1,_,_),流年星(S2,_,_,V1,_,_),宮(H1,_,S1),顯示(['流',S2,'會',H1,'宮主',S1]),換行,多解.

流年交角:-星(S1,_,_,V1,_,_),流年星(S2,_,_,V2,_,_),四正宮(V1,V2),宮(H1,_,S1),顯示(['流',S2,'刑',H1,'宮主',S1]),換行,多解.

流年交角:-星(S1,_,_,V1,_,_),流年星(S2,_,_,V2,_,_),拱宮(V1,V2),宮(H1,_,S1),顯示(['流',S2,'合',H1,'宮主',S1]),換行,多解.

流年交角:-星(S1,_,_,V1,_,_),流年星(S2,_,_,V2,_,_),對宮(V1,V2),宮(H1,_,S1),顯示(['流',S2,'沖',H1,'宮主',S1]),換行,多解.


刑沖會合:-$本命交角,$流年交角.

run:-刑沖會合.
貼文者 : : 天步

小限什麼宮? - 2005-07-03 15:32:59

回應:


hi 天步兄你好
謝謝

請問
1)為何軼件中程式4開始沒有程式在內
只顯示undefined predicate: run/0??????

2)小限=本命,大限,流年什麼宮,如何撰寫?




回應一:
程式1~3是範例.
程式4~19都是空的,請自行應用.
程式20是共用的程式,可供其他編號的程式使用.

回應二:
關於第二項,可利用內訂函式"大限盤( V1,V2,V3,V4 )" :

run:-
大限盤(X,A,B,C),
顯示(['小限=X',',本命=',A,',大限=',B,',流年=',C]),換行,多解.
貼文者 : : 天步

Re: 請問如果想一次撰寫 - 2005-07-03 18:31:58

>流星入本命,大限,流年,小限何宮?
下例即可得流星入何宮,而是小限的那一宮? 因未建立相關的內訂函式,必須自行設計,得想一想...

run:-
流年星( S1,_,_,_,V1,_ ),
大限盤( V1,V2,V3,V4 ),
顯示(['流',S1,'入本命',V2,',大限',V3,',流年',V4]),
換行,多解.

>流星入本命,大限,流年,小限是何宮主,度主?
果老似乎不另取轉盤的宮主,我不太瞭解這個問題?
貼文者 : : 天步

undefined predicate 小限盤? - 2005-07-11 23:45:11

>undefined predicate: 小限盤/0
出現錯誤訊息是因未指定流年虛歲.
貼文者 : : 天步

Re: undefined predicate 小限盤? - 2005-07-13 22:39:28

回應:


在前段
undefined predicate: 小限盤/4

在後段
undefined predicate: 小限盤/0





小限盤/4:表示函式名稱為"小限盤",有4個參數.
小限盤/0:表示函式名稱為"小限盤",無參數.

undefined predicate,產生此錯誤,有三種可能:
1.尚未定義函式.
2.函式名稱打錯.
3.參數個數錯誤.
貼文者 : : jfive

Re: undefined predicate 小限盤? - 2005-07-15 12:10:09

每次看到這個 discussion list,
就深深覺得天步兄很了不起, 應該開發一個業務,
專門幫人家訂製論命智庫, 或者讓各家高手可以銷售自己的論命智庫說.

一般人連 c 都有問題了,
還要頭腦清楚邏輯分明到可以掌握 prolog,
大概只有極少數狂熱分子說.

不過反過來想, 這也是很好的進入障礙就是了.

最近越玩越覺得從天文曆算這邊衍申出來的 model,
威力真是無遠弗屆阿~~~ 數學真好玩, 又真好用 !!
貼文者 : : 天步

牛頓 占星 微積分 - 2005-07-15 22:27:47

>專門幫人家訂製論命智庫, 或者讓各家高手可以銷售自己的論命智庫說.
 是想建立買賣智庫的機制,就如同網路上訂購lib或component一般,如此可改變命理知識的傳遞方式.

>還要頭腦清楚邏輯分明到可以掌握 prolog, 大概只有極少數狂熱分子說.
 從玩組合語言到人工智慧語言,已浸淫在電腦語言中20幾年了,確實是很狂熱.希望電腦科學能再向前邁進,讓電腦語言能像人類語言般的靈活,進而讓電腦自行思考.語言對人類非常重要,在小學入學前,我就意識到腦部絕大部份是以語言方式思考的,只有極少部份是用圖形或其他方式思考.

>最近越玩越覺得從天文曆算這邊衍申出來的model,威力真是無遠弗屆阿~~~數學真好玩
 數學來自自然,而自然界中又以天文對人類數學的供獻最多.1663年牛頓為了理解一本占星書中的幾何圖形,便買了一本歐基里得(Euclid)的幾何學書來研讀,兩年後他便創立了微積分。
貼文者 : : 天步

五個村莊問題 - 2006-04-13 22:27:25

網友提出有關人工智慧prolog的問題,我們來想一想.

五個村莊問題

有五個村莊塗著不同顏色,住著五種不同國籍的人,喝不同飲料,抽不同香煙,及養不同寵物,其關係如下:

-英國人住紅色村莊
-西班牙人養狗
-挪威人住在左邊第一間村莊
-住黃色村莊的人抽長壽煙
-抽新樂園的住在養狐狸人的旁邊
-挪威人住在藍色村莊旁邊
-抽萬寶路的人養蛇
-抽肯特煙的人喝橘子汁
-烏克蘭人喝茶
-日本人抽百樂門
-抽長壽煙的人住在養馬的人的旁邊
-住綠村莊的人喝咖啡
-綠村莊相鄰象牙色村莊的右邊
-中間村莊的人喝牛奶

請問斑馬住在那個村莊?
誰喝水?
他們是怎麼住的?
請問括弧紅色問號的部份該寫什麼程式碼?

程式碼:
member(C,D,N,S,P,[[C|_],[D|_],[N|_],[S|_],[P|_]]).
member(C,D,N,S,P,[[_|Lc],[_|Ld],[_|Ln],[_|Ls],[_|Lp]]):- menber(???).
right(C1,D1,N1,S1,P1,C2,D2,N2,S2,P2,[[C1,C2|_],[D1,D2|_],[N1,N2|_],[S1,S2|_],[P1,P2|_]]).
right(C1,D1,N1,S1,P1,C2,D2,N2,S2,P2,[[_|Lc],[_|Ld],[_|Ln],[_|Ls],[_|Lp]]:-
right(???).
next(C1,D1,N1,S1,P1,C2,D2,N2,S2,P2,L):- right(C1,D1,N1,S1,P1,???,L);
right(???,C1,D1,N1,S1,P1,L).
constraints(L):-
member(紅色,_,英國人,_,_,L),
member(_,_,西班牙人,_,狗,L),
member(黃色,_,_,長壽煙,_,L),
member(_,茶,烏克蘭人,_,_,L),
member(綠色,酒,_,_,_,L),
member(_,_,_,萬寶路,蛇,L),
member(_,橘子汁,_,肯特,_,L),
member(_,_,日本人,百樂門,_,L),
right(象牙色,_,_,_,_,綠色,_,_,_,_,L),
next(_,_,_,新樂園,_,_,_,_,_,狐狸,L),
next(_,_,_,長壽煙,_,_,_,_,_,馬,L),
next(_,_,挪威人,_,_,藍色,_,_,_,_,L).

thinking:-constraints([[C1,C2,C3,C4,C5],[D1,D2,牛奶,D4,D5],
[挪威人,N2,N3,N4,N5],[S1,S2,S3,S4,S5],
[P1,P2,P3,P4,P5]],
L = [[C1,C2,C3,C4,C5],[D1,D2,牛奶,D4,D5],
[挪威人,N2,N3,N4,N5],[S1,S2,S3,S4,S5],
[P1,P2,P3,P4,P5]],
member(C,_,_,_,斑馬,L),
member(_,水,N,_,_,L),
write([斑馬,住在,C,村莊]),nl,
write([N,喝,水]),nl,
write(L),nl,
fail.
貼文者 : : 天步

re:五個村莊問題(解答) - 2006-04-14 21:38:32

我就用天步果老星宗人工智慧版程式解一下問題,紅色為答案.

member(C,D,N,S,P,[[C|_],[D|_],[N|_],[S|_],[P|_]]).
member(C,D,N,S,P,[[_|Lc],[_|Ld],[_|Ln],[_|Ls],[_|Lp]]):-
member(C,D,N,S,P,[Lc,Ld,Ln,Ls,Lp]).

right(C1,D1,N1,S1,P1,C2,D2,N2,S2,P2,[[C1,C2|_],[D1,D2|_],[N1,N2|_],[S1,S2|_],[P1,P2|_]]).
right(C1,D1,N1,S1,P1,C2,D2,N2,S2,P2,[[_|Lc],[_|Ld],[_|Ln],[_|Ls],[_|Lp]]):-
right(C1,D1,N1,S1,P1,C2,D2,N2,S2,P2,[Lc,Ld,Ln,Ls,Lp]).

next(C1,D1,N1,S1,P1,C2,D2,N2,S2,P2,L):-
 right(C1,D1,N1,S1,P1,C2,D2,N2,S2,P2,L);
 right(C2,D2,N2,S2,P2,C1,D1,N1,S1,P1,L).

constraints(L):-
 member(紅色,_,英國人,_,_,L),
 member(_,_,西班牙人,_,狗,L),
 member(黃色,_,_,長壽煙,_,L),
 member(_,茶,烏克蘭人,_,_,L),
 member(綠色,酒,_,_,_,L),
 member(_,_,_,萬寶路,蛇,L),
 member(_,橘子汁,_,肯特,_,L),
 member(_,_,日本人,百樂門,_,L),
 right(象牙色,_,_,_,_,綠色,_,_,_,_,L),
 next(_,_,_,新樂園,_,_,_,_,_,狐狸,L),
 next(_,_,_,長壽煙,_,_,_,_,_,馬,L),
 next(_,_,挪威人,_,_,藍色,_,_,_,_,L).

thinking:-
 constraints([[C1,C2,C3,C4,C5],[D1,D2,牛奶,D4,D5],[挪威人,N2,N3,N4,N5],
 [S1,S2,S3,S4,S5],[P1,P2,P3,P4,P5]]),
 L = [[C1,C2,C3,C4,C5],[D1,D2,牛奶,D4,D5],[挪威人,N2,N3,N4,N5],[S1,S2,S3,S4,S5],[P1,P2,P3,P4,P5]],
 member(C,_,_,_,斑馬,L),
 member(_,水,N,_,_,L),
 顯示([斑馬,住在,C,村莊]),換行,
 顯示([N,喝,水]),換行,
 顯示([L]),換行,
 多解.

run:-$thinking.


人工智慧解盤:

斑馬住在綠色村莊
挪威人喝水
[
[黃色 ,藍色  ,紅色 ,象牙色 ,綠色 ],
[水  ,茶   ,牛奶 ,橘子汁 ,酒  ],
[挪威人,烏克蘭人,英國人,西班牙人,日本人],
[長壽煙,新樂園 ,萬寶路,肯特  ,百樂門],
[狐狸 ,馬   ,蛇  ,狗   ,斑馬 ]

]
貼文者 : : Rose_wang

Re: re:五個村莊問題(解答) - 2006-04-15 00:02:31

國籍 挪威 烏克蘭 英國 西班牙 日本
村莊 黃色 蘭色 紅色 象牙色 綠色
飲料 水 茶 牛奶 橘子汁 咖啡
香煙 長壽煙 新樂園 萬寶路 肯特 百樂園
寵物 狐狸 馬 蛇 狗 斑馬
方位 左一 左二 中間 右二 右一

真好玩...天步大大多出點這樣的題目啊....

感覺首先只要把挪威和英國確定
然後把其他兩個有關係的條件看成一個整體就很好排出來了...

耐心+試驗的過程...

哈哈哈哈哈...
貼文者 : : Rose_wang

Re: re:五個村莊問題(解答) - 2006-04-15 00:14:10

還想問問天步大大...
多解是指什麼??

哎.數學太差...程式只學過數據庫
5555555555555

語言對人類非常重要,在小學入學前,我就意識到腦部絕大部份是以語言方式思考的,只有極少部份是用圖形或其他方式思考.

-------------------------------------
555555555在學習英語後才注重到邏輯和思考方向的重要性....
貼文者 : : 天步

Re: re:五個村莊問題(解答) - 2006-04-15 10:52:14

>多解是指什麼??
"多解"是天步自訂的語詞,即是prolog語法中的"fail",要求電腦再求得另一解,而本題只有一解.

>語言對人類非常重要,在小學入學前,我就意識到腦部絕大部份是以語言方式思考的
沒錯,每個人的腦中都會有個聲音以自言自語的方式思考.

>只有極少部份是用圖形或其他方式思考.
思考有很多型式,藉由抽象的語言符號或感覺來思考.如音樂家以音符思考,數學家以數學符號思考,畫家以線條筆觸空間顏色等思考.美食專家用味道思考,武術家以肢體力量思考,而占星家則以星球的排列組合來思考.

>在學習英語後才注重到邏輯和思考方向的重要性
邏輯有一定的規則,要學並不難.但當條件多時則非人腦可勝任,排除太抽象無法建立規則外,電腦皆可輕易的解決.
貼文者 : : 天步

請問一下prolog的語法~從航班資料庫中 - 2006-04-17 21:13:13

ㄚ弟請張貼問題於此議題下,以利管理.

1、
題目:
從航班資料庫中,找出資料能回答類似每週那幾天有從倫敦直飛賈納的班機?或如何才能在週四從賈納到艾丁堡去?或我想遊覽米蘭、賈納、蘇黎士,週二從倫敦出發且在週五回倫敦,一天飛機不能超過一班行程如何安排?

程式碼:
prolog的語法有些部份我已解出來但是我跑出來會有一個錯誤一直解不出來,能否方便告訴我一下解答謝謝(有顏色畫出現部份能否幫我看一下是否正確)謝謝



:-op(50,xfy,:).
flight(P1,P2,Day,Fln,DepT,ArrT):-timetable(P1,P2,FlL),member(DepT/ArrT/Fln/DayL,FlL),flyday(Day,DayL).
flyday(Day,DayL):-member(???).
flyday(Day,alldays):-member(Day,[mo,tu,we,th,fr,sa,su]).
%直飛
route(P1,P2,Day,[P1-P2:Fln:DepT]):-flight(???).
route(P1,P2,Day,[P1-P3:Fln1:DepT1|R]):-
route(P3,P2,Day,R),flight(P1,P3,Day,Fln1,DepT1,ArrT1),deptime(R,DepT2),transfer(ArrT1,DepT2).
deptime([DepT|_],DepT).
transfer(H1:M1,H2:M2):-60*(H2-H1)+M2-M1>=40.
%航班資料庫
timetable(艾丁堡,倫敦,[9:40/10:50/ba4733/alldays,13:40/14:50/ba4773/alldays,19:40/20:50/ba4833/[mo,tu,we,th,fr,su]]).
timetable(倫敦,艾丁堡,[9:40/10:50/ba4732/alldays,11:40/12:50/ba4752/alldays,18:40/19:50/ba4822/[mo,tu,we,th,fr]]).
timetable(倫敦,賈納,[13:20/16:20/ju201/[fr],13:20/16:20/ju213/[su]]).
timetable(倫敦,蘇黎士,[9:10/11:45/ba614/alldays,14:45/17:20/sr805/alldays]).
timetable(倫敦,米蘭,[8:30/11:20/ba510/alldays,11:00/13:50/az459/alldays]).
timetable(賈納,蘇黎士,[11:30/12:40/ju322/[tu,th]]).
timetable(賈納,倫敦,[11:10/12:20/ju200/[fr],11:25/12:20/ju212/[su]]).
timetable(米蘭,倫敦,[9:10/10:00/az458/alldays,12:20/13:10/ba511/alldays]).
timetable(米蘭,蘇黎士,[9:25/10:15/sr621/alldays,12:45/13:35/sr623/alldays]).
timetable(蘇黎士,賈納,[13:30/14:40/ju323/[tu,th]]).
timetable(蘇黎士,倫敦,[9:00/9:40/ba613/[mo,tu,we,th,fr,sa],16:10/16:55/sr806/[mo,tu,we,th,fr,su]]).
timetable(蘇黎士,米蘭,[7:55/8:45/sr620/alldays]).



第一個問題打flight(倫敦,賈納,D,_,_,_).

第二個問題打route(賈納,艾丁堡,th,R).

第三個問題打flight(倫敦,C1,tu,Fn1,Dp1,Ar1),flight(C1,C2,we,Fn2,Dp2,Ar2),flight(C2,C3,th,Fn3,Dp3,Ar3),flight(C3,倫敦,fr,Fn4,Dp4,Ar4),member(C1,[米蘭,賈納,蘇黎士]),member(C2,[米蘭,賈納,蘇黎士]),member(C3,[米蘭,賈納,蘇黎士]),C1\==C2,C2\==C3,C1\==C3.
貼文者 : : 天步

Re: 請問一下prolog的語法~從航班資料庫中 - 2006-04-17 21:18:09

您用的prolog軟體是什麼名稱?
貼文者 : : ㄚ弟

Re: 請問一下prolog的語法~從航班資料庫中 - 2006-04-17 22:36:49

是SWI-Prolog
能否麻煩幫我看一下
因為我碰到瓶頸了
謝謝
貼文者 : : 天步

Re: 請問一下prolog的語法~從航班資料庫中 - 2006-04-18 10:11:57

請問如何設定SWI-Prolog成為支持中文,我下載5.6.11版,介紹中說明此版有支援UTF8,但我不知如何設定.
貼文者 : : ㄚ弟

Re: 請問一下prolog的語法~從航班資料庫中 - 2006-04-18 10:17:35

我也不熟悉這套軟體
但是我都是用英文
所以不知道有支援中文版
貼文者 : : 天步

Re: 航班(解答) - 2006-04-18 16:31:01

:-op(50,xfy,:).
flight(P1,P2,Day,Fln,DepT,ArrT):-timetable(P1,P2,FlL),member(DepT/ArrT/Fln/DayL,FlL),flyday(Day,DayL).

flyday(Day,DayL):-member(Day,DayL).
flyday(Day,alldays):-member(Day,[mo,tu,we,th,fr,sa,su]).

route(P1,P2,Day,[P1-P2:Fln:DepT]):-flight(P1,P2,Day,Fln,DepT,_).
route(P1,P2,Day,[P1-P3:Fln1:DepT1|R]):-
route(P3,P2,Day,R),flight(P1,P3,Day,Fln1,DepT1,ArrT1),deptime(R,DepT2),transfer(ArrT1,DepT2).

deptime([P1-P2:Fln:DepT|_],DepT).
transfer(H1:M1,H2:M2):-60*(H2-H1)+M2-M1>=40.
%航班資料庫
timetable(艾丁堡,倫敦,[9:40/10:50/ba4733/alldays,13:40/14:50/ba4773/alldays,19:40/20:50/ba4833/[mo,tu,we,th,fr,su]]).
timetable(倫敦,艾丁堡,[9:40/10:50/ba4732/alldays,11:40/12:50/ba4752/alldays,18:40/19:50/ba4822/[mo,tu,we,th,fr]]).
timetable(倫敦,賈納,[13:20/16:20/ju201/[fr],13:20/16:20/ju213/[su]]).
timetable(倫敦,蘇黎士,[9:10/11:45/ba614/alldays,14:45/17:20/sr805/alldays]).
timetable(倫敦,米蘭,[8:30/11:20/ba510/alldays,11:00/13:50/az459/alldays]).
timetable(賈納,蘇黎士,[11:30/12:40/ju322/[tu,th]]).
timetable(賈納,倫敦,[11:10/12:20/ju200/[fr],11:25/12:20/ju212/[su]]).
timetable(米蘭,倫敦,[9:10/10:00/az458/alldays,12:20/13:10/ba511/alldays]).
timetable(米蘭,蘇黎士,[9:25/10:15/sr621/alldays,12:45/13:35/sr623/alldays]).
timetable(蘇黎士,賈納,[13:30/14:40/ju323/[tu,th]]).
timetable(蘇黎士,倫敦,[9:00/9:40/ba613/[mo,tu,we,th,fr,sa],16:10/16:55/sr806/[mo,tu,we,th,fr,su]]).
timetable(蘇黎士,米蘭,[7:55/8:45/sr620/alldays]).

1.每週那幾天有從倫敦直飛賈納的班機?
?-flight(倫敦,賈納,D,_,_,_).
D = fr

2.如何才能在週四從賈納到艾丁堡去?
?-route(賈納,艾丁堡,th,R).
R = ['賈納'-'蘇黎士':ju322:11:30, '蘇黎士'-'倫敦':sr806:16:10, '倫敦'-'艾丁堡':ba4822:18:40]

3.遊覽米蘭、賈納、蘇黎士,週二從倫敦出發且在週五回倫敦,一天飛機不能超過一班行程如何安排?
?-flight(倫敦,C1,tu,Fn1,Dp1,Ar1),flight(C1,C2,we,Fn2,Dp2,Ar2),flight(C2,C3,th,Fn3,Dp3,Ar3),flight(C3,倫敦,fr,Fn4,Dp4,Ar4),member(C1,[米蘭,賈納,蘇黎士]),member(C2,[米蘭,賈納,蘇黎士]),member(C3,[米蘭,賈納,蘇黎士]),C1\==C2,C2\==C3,C1\==C3.
C1 = '米蘭'
Fn1 = ba510
Dp1 = 8:30
Ar1 = 11:20
C2 = '蘇黎士'
Fn2 = sr621
Dp2 = 9:25
Ar2 = 10:15
C3 = '賈納'
Fn3 = ju323
Dp3 = 13:30
Ar3 = 14:40
Fn4 = ju200
Dp4 = 11:10
Ar4 = 12:20
貼文者 : : 天步

8個皇后問題 - 2006-04-19 21:54:56

代ㄚ弟請張貼問題.

在一個8*8的棋盤上,每一行均有一個皇后西洋棋,請問如何排列這些皇后,才能達成每一行或列或對角線上均只有一個皇后存在。
提示:

程式碼:
solution([]).
solution([X/Y|Others]):-
solution( 1 ),member(Y,[1,2,3,4,5,6,7,8]),noattack(X/Y, 2 ).
noattack( 3 ,[]).
noattack(X/Y,[X1/Y1|Others]:-Y=\=Y1,Y1-Y=\=X1-X,Y1-Y=\=X-X1,noattack(X/Y, 4 ).

求解打solution([1/Y1,2/Y2,3/Y3,4/Y4,5/Y5,6/Y6,7/Y7,8/Y8]).
貼文者 : : 天步

Re: 8個皇后問題(解答) - 2006-04-19 21:58:40

solution([]).
solution([X/Y | Others]) :-
solution(Others),
member(Y,[1,2,3,4,5,6,7,8]),
nocheck(X/Y, Others).

nocheck(_, []).
nocheck(X/Y, [X1/Y1 | Others]) :-
Y =\= Y1,
Y1-Y=\=X1-X,Y1-Y=\=X-X1,
nocheck(X/Y, Others).

?- solution([1/Y1,2/Y2,3/Y3,4/Y4,5/Y5,6/Y6,7/Y7,8/Y8]).
Y1 = 4
Y2 = 2
Y3 = 7
Y4 = 3
Y5 = 6
Y6 = 8
Y7 = 5
Y8 = 1 ;

Y1 = 5
Y2 = 2
Y3 = 4
Y4 = 7
Y5 = 3
Y6 = 8
Y7 = 6
Y8 = 1 ;

以下從略,此為多解
貼文者 : : ㄚ弟

關於prolog問題 - 2006-04-22 23:34:38

天步版主你好
想請問一下,上次你幫我解的五個村莊問題
是如何解出來的,如果要解釋解出來的步驟該如何講
我友點不明瞭,能否指點一下

另外有一題prolgo的程式怪怪的
我明明已經沒出現錯誤訊息
但是位何執行時會出現錯誤訊息呢?
能否幫我看一下
謝謝

原始程式碼
ngb(italy,[switzerland,france,austria,slovenia,monaco,vatican]).
ngb(vatican,[italy]).
ngb(monaco,[france,italy]).
ngb(france,[monaco,italy,switzerland,liechtenstein,germany,luxembourg,belgium,netherland,spain]).
ngb(luxembourg,[france,germany,belgium]).
ngb(belgium,[france,luxembourg,germany,netherland]).
ngb(netherland,[france,belgium,germany]).
ngb(spain,[france,portugal]).
ngb(portugal,[spain]).
ngb(britain,[ireland]).
ngb(ireland,[britain]).
ngb(iceland,[]).
ngb(malta,[]).
colours([]).
colours([Country/Colour|Rest]):-
colours(Rest),member(******,[yellow,blue,red,green]),not((member(Country1/*****,Rest),neighbour(Country,Country1))).
neighbour(County,Country1):-ngb(******,Neighbours),member(******,Neighbours).
makelist(L):-collect([germany],[],L).
collect([],Closed,Closed).
collect([X|Open],Closed,L):-member(X,Closed),!,collect(Open,Closed,L).
collect([X|Open],Closed,L):-ngb(X,Ns),append(Ns,Open,Op1),collect(Op1,[X|Closed],L).
country(C):-ngb(C,_).

打*是要寫入的部份

解出來的程式碼
ngb(italy,[switzerland,france,austria,slovenia,monaco,vatican]).
ngb(vatican,[italy]).
ngb(monaco,[france,italy]).
ngb(france,[monaco,italy,switzerland,liechtenstein,germany,luxembourg,belgium,netherland,spain]).
ngb(luxembourg,[france,germany,belgium]).
ngb(belgium,[france,luxembourg,germany,netherland]).
ngb(netherland,[france,belgium,germany]).
ngb(spain,[france,portugal]).
ngb(portugal,[spain]).
ngb(britain,[ireland]).
ngb(ireland,[britain]).
ngb(iceland,[]).
ngb(malta,[]).
colours([]).
colours([Country/colours|Rest]):-
colours(Rest),member(X,Closed,[yellow,blue,red,green]),not((member(Country1/X,Closed,Rest),neighbour(Country,Country1))).
neighbour(Country,Country):-ngb(X,Neighbours),member(X,colour,Neighbours).
makelist(L):-collect([germany],[],L).
collect([],Closed,Closed).
collect([X|Open],Closed,L):-member(X,Closed),!,collect(Open,Closed,L).
collect([X|Open],Closed,L):-ngb(X,Ns),append(Ns,Open,Op1),collect(Op1,[X|Closed],L).
country(C):-ngb(C,_).

求解打 setof(Cntry/Colour,country(Cntry),CountryColourList),colours(CountryColourList).

執行後會出現的訊息
?- setof(Cntry/Colour,country(Cntry),CountryColourList),colours(CountryColourList).
ERROR: Undefined procedure: member/3
ERROR: However, there are definitions for:
ERROR: member/2
ERROR: member/2
?-

為何會這樣呢?
能否幫我看一下
貼文者 : : 天步

Re: 關於prolog問題 - 2006-04-23 15:37:54

>是如何解出來的,如果要解釋解出來的步驟該如何講
人工智慧語言系統大都內建推理引擎,很難用文字來解釋程式碼.

>明明已經沒出現錯誤訊息,但是為何執行時會出現錯誤訊息呢?
編譯時沒錯誤,不見得就沒問題,因prolog不像C或Java在編譯時會挑出未定義的函示或參數.

>ERROR: Undefined procedure: member/3
您的程式碼member有兩個,一個有二參數,另一個有三參數,並未定義.
貼文者 : : ㄚ弟

Re: 關於prolog問題 - 2006-06-12 20:16:23

請問老師對於裴氏圖熟析嗎

或是老師知道那裡有裴氏圖的資訊可以参考

學生有一個裴氏圖問題,不知能否請老師幫忙看一下
謝謝

以下為我的研究題目
請設計一個裴氏圖說明下圖只有4站捷運的出入口票機控制方式,假設每站與站間定價為10元且只接受悠遊卡(初始值=40元)。
貼文者 : : 天步

Re: 關於prolog問題 - 2006-06-12 22:06:28

我不瞭解這個題目,可先舉例說明看看.
貼文者 : : ㄚ弟

Re: 關於prolog問題 - 2006-06-12 22:57:23

以下為我的研究題目
請設計一個裴氏圖(Petri Net)說明下圖只有4站捷運的出入口票機控制方式,假設每站與站間定價為10元且只接受悠遊卡(初始值=40元)。


圖形部份
我已經寄到老師的[email protected] 信箱了

不知是否有收到

如果老師知道如何解題
能否將解題寄到我的信箱謝謝
[email protected]
或試哪裡可以有類似的参考題目
都歡迎老師指點一下學生
我都找不到類似題目可以参考
傷腦筋
貼文者 : : ㄚ弟

Re: 關於prolog問題 - 2006-06-14 23:46:06

請問天步老師不知有答案了嗎?
還是哪裡可以有参考答案
能否告知謝謝
貼文者 : : 天步

Re: 關於prolog問題 - 2006-06-17 11:23:11

裴氏圖我沒有學過,只知道裴氏圖用在系統分析上.

相關資料可上網查Petri Net,下列網頁有些整理:
http://www.weco.net/blog/?p=115
貼文者 : : ㄚ弟

Re: 關於prolog問題 - 2006-06-17 11:40:10

謝謝
了解
只好自己想辦法囉
貼文者 : : 天步

人工智慧-結婚預測 - 2007-03-15 23:46:36

 論命常常被問到何時結婚? 在果老星宗有些星象可測論何時結婚,如男行財度,女行官度,日月頂限,夫(妻)星前迎等,但要一一逐年比對星曆太過繁瑣,藉由人工智慧版的功能,由電腦自行比對,幾秒內即可取得結果,部分程式如下:

結婚預測:-歲限(Y,M,_,_,_),Y>15,Y<55,殿(M,X1),宮(妻,_,X2),前後星(X2,X1),顯示([Y,'歲',M,'宿夫妻星',X2,'前迎 ']),換行,多解.

結婚預測:-性別(女),歲限(Y,M,_,_,_),Y>15,Y<95,殿(M,X1),前後星(日,X1),顯示([Y,'歲',M,'宿日在前 ']),換行,多解.

結婚預測:-性別(女),歲限(Y,M,_,_,_),Y>15,Y<95,殿(M,X1),星曜(度主,X2),剋(X1,X2),顯示([Y,'歲',M,'宿行官度 ']),換行,多解.

結婚預測:-歲限(Y,M,_,_,_),Y>15,Y<95,宮(妻,_,X2),星(X2,M,_,_,_,_),顯示([Y,'歲',M,'宿夫妻星',X2,'頂限 ']),換行,多解.

結果範例: 周星馳何時結婚?

32歲胃宿行財度 
33歲胃宿行財度 
34歲胃宿行財度 
35歲胃宿行財度 
36歲胃宿行財度 
37歲胃宿行財度 
64歲女宿行財度 
64歲女宿月明頂 
65歲女宿月明頂 65歲女宿行財度  
66歲女宿月明頂 66歲女宿行財度  
67歲女宿月明頂 67歲女宿行財度