亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? prolog.lsp

?? 基因演算法source code範例vc
?? LSP
字號:
;;Rules	are represented	as (head bodys)	list,
;;	      stored in	the predicate's	plist
;; for example,
;; R1=(Head   Bodys)
;;   =((p ...)(q ...)(r	...)...)
;; Append R into (get p	'rules)

(defvar	*prolog-rules* nil)

(defun add-index (index)
   (setf *prolog-rules*	(adjoin	index *prolog-rules*)) )
(defun clear-index (index)
		 (setf (get index 'rules) nil))
(defun get-index (rule)	(caar rule))

(defmacro <-- (rule) `(add-rule	',rule))
(defmacro fact (&rest facts) `(add-rule	',facts))
(defmacro rule (head sign &rest	rules)
			    `(<-- (,head ,@rules)))

(defun add-rule	(rule)
  (let*	((index	   (get-index rule))
	 (oldrules (get	index 'rules)))
	(add-index index)
	(setf (get index 'rules)
	      (nconc oldrules (list rule)))
	(format	t "~&Add ~a to ~a --> ~a " rule	index (get index 'rules))
) )
(defun clear-rules ()
   (dolist  (x *prolog-rules*)
      (clear-index x))
   (setf *prolog-rules*	nil)
)


(defun my-prove	(goal binds)
 ;(format t "~&Prove ~a" (get (get-index goal) 'rules))
  (let ((result	nil))
    (dolist (rule (get (get-index goal)	'rules)	result)
       (let* ((nr (rename-var rule))
	      (tmp (my-prove-all (cdr nr)
		      (unify-binds (car	goal)(car nr) binds)
	     ))	   )
	     (setf result (append tmp result))
) ) )  )

(defun my-prove-all (goals binds)
  (cond
	((null binds) nil)
	((null goals) (list binds))
	(t (let	((result nil))
	    (dolist (x (my-prove goals binds) result)
	      (setf result
		    (append (my-prove-all (rest	goals) x) result)
) )	)  )) )

(defun my-prove-one-by-one (goals binds)
  (cond
       ((null binds) nil)
       ((null goals) binds)
       (t (my-prove-one	(first goals) binds (rest goals))
) )    )

(defun my-prove-one (goal binds	rest-goals)
  (let ((clauses (get (first goal) 'rules)))
    (cond
       ((listp clauses)
	(some #'(lambda	(rule)
		 (format t "~&Try rule ~a" rule)
		 (let ((nr (rename-var rule)))
		      (my-prove-one-by-one
			(append	(rest nr) rest-goals)
			(unify-binds goal (first nr) binds)
		))    )
	      clauses
       ))
       ((eql '!	clauses) nil)
       ((eql '$	clauses)
	(show-result (rest goal) binds)
	(if (continue-p)
	    nil
	    (my-prove-one-by-one rest-goals binds)
       ))
) ) )

(defun one-by-one-with-cut (goals binds)
  (cond
       ((null binds) (values nil nil))
       ((null goals) (values binds nil))
       (t (multiple-value-bind (bs cut?)
	     (one-with-cut (first goals) binds (rest goals))
	     (values bs	cut?)
) )    )  )

(defun one-with-cut (goal binds	rest-goals)
  (let ((clauses (get (first goal) 'rules)))
    (cond
       ((listp clauses)
	(let ((cutvalue	nil)(bs2 nil))
	 (dolist (rule clauses)
	    (format t "~&Try rule ~a" rule)
	    (let ((nr (rename-var rule)))
		 (multiple-value-bind (bs cut?)
		   (one-by-one-with-cut
		     (append (rest nr) rest-goals)
		     (unify-binds goal (first nr) binds)
		   )
		   (setf cutvalue cut?)
		   (setf bs2 bs)
	    )	 )
	    (when cutvalue (return))
	 )
	 (values bs2 cutvalue)
       ))
       ((eql '!	clauses)
	(format	t "~&* Cut here! *")
	(multiple-value-bind (bs cut?)
	   (one-by-one-with-cut	rest-goals binds)
	   (values bs t)
       ))
       ((eql '$	clauses)
     ;	(format	t "~&$..binds= ~a" binds)
	(show-result (rest goal) binds)
	(if (continue-p)
	    (values nil	nil)
	    (multiple-value-bind (bs cut?)
	      (one-by-one-with-cut rest-goals binds)
	      (values bs cut?)
	)   )
       )
) ) )

(defun continue-p ()
   (case (read-char)
       (#\; t)
       (#\. nil)
       (#\newline (continue-p))
       (otherwise
	  (format t " Enter ; to see more or . to stop")
	  (continue-p)
)  )   )

(defun rename-var (x)
  "replace all variables in x with new ones."
  (sublis (mapcar #'(lambda (var) (cons var (gensym (string var))))
		  (vars-in x))
	  x
) )

(defun vars-in (exp)
   (let* ((tmp1	(DF-search exp))
	  (tmp2	(remove-if-not #'var-p tmp1))
	  (result nil))
	 (dolist (x tmp2 result)
	   (setf result	(adjoin	x result))
)  )	 )

(defun DF-search (L)
   (cond ((null	L) ())
	 ((atom	L) (list L))
	 (t `(,@(DF-search (car	L))
	      ,@(DF-search (cdr	L)))
)  )	 )

;(defmacro ?- (&rest goals) `(my-prove-all ',goals '(())))
(defmacro ??  (&rest goals) `(top-level-prove ',goals))
(defmacro ?1  (&rest goals) `(top-level-prove-one-by-one ',goals))
(defmacro ?1c (&rest goals) `(top-level-one-by-one-with-cut ',goals))


(defun unify-binds (x y	binds)
   (cond
      ((and (null x)(null y))
       (if (null binds)	t binds	))
      ((or  (null x)(null y)) nil)
      ((eql x y) binds)
      ((eql (car x)(car	y))
       (unify-binds (cdr x)(cdr	y) binds))
      ((header-p (car x) #\?)
       (let ((new-binds	(extend-binds (car x) (car y) binds)))
	   (if (null new-binds)
	       nil
	       (unify-binds (cdr x)(cdr	y) new-binds)
      ))   )
      ((header-p (car y) #\?)
       (let ((new-binds	(extend-binds (car y) (car x) binds)))
	   (if (null new-binds)
	       nil
	       (unify-binds (cdr x)(cdr	y) new-binds)
      ))   )
)  )

(defun header-p	(x head)
   (and	(symbolp x)
	(char= (char (symbol-name x) 0)	head )))

(defun extend-binds (x y b)
   (let	((xpair	(assoc x b))
	 (ypair	(assoc y b)))
	(cond
	    ((eql x y) b)
	    ;binding of	x exist
	    ((not (null	xpair))
	     (extend-binds (second xpair) y b))
	    ;binding of	x not exist
	    ((and (var-p y) ypair)
	     (extend-binds x (second ypair) b))
	    ;neither x nor y is	variable
	    ((and (not (var-p x))(not (var-p y)))
	      (if (eql x y) b nil))
	    (t (if (var-p x)
		   (cons (list x y) b)
		   (cons (list y x) b)))
)  )	)

(defun do-binds	(binds x)
   "Replace all	bindings of variables in x"
   (cond
     ((null binds) x)
     ((and (var-p x)(assoc x binds))
      (do-binds	binds (second (assoc x binds))))
     ((atom x) x)
     (t	(cons (do-binds	binds (car x))
	      (do-binds	binds (cdr x))
)  ) )	)

(defun var-p (x) (header-p x #\?))

(defun unify (x	y)
  (let ((bindings nil))
       (do-binds (unify-binds x	y bindings) y)
) )


(defun top-level-prove (goals)
  "Prove the goals, and	print variables	readably."
  (let ((solutions (my-prove-all goals '(()) ))
	(vars	   (vars-in goals)) )
       (cond
	   ((null solutions) (format t "~&No."))
	   (t (dolist (x solutions)
		 (show-result vars x))
       )   )
  )
  (values)
)

(defun top-level-prove-one-by-one (goals)
  (my-prove-one-by-one `(,@goals ($ ,@(vars-in goals)))	'(()) )
  (format t "~&No.")
  (values)
)

(defun top-level-one-by-one-with-cut (goals)
  (one-by-one-with-cut `(,@goals ($ ,@(vars-in goals)))	'(()) )
  (format t "~&No.")
  (values)
)

(defun show-result (vars binds)
  "Print each variable with its binding."
  (if (null vars)
      (format t "~&Yes")
      (dolist (x vars)
	(format	t " ~a = ~a" x (do-binds binds x)
  )   )	)
  (format t ";~&")
)

(setf (get '$ 'rules) '$)
(setf (get '! 'rules) '!)

(clear-rules)

(fact (girl mary))
(fact (girl joy))
(fact (boy  john))
(fact (boy  tom))
(fact (pet  cat))
(fact (pet  dog))
(fact (love john mary))
(fact (like john dog))
(fact (like tom	 car))
(fact (like mary cat))

(rule (like joy	 ?x) if	(pet ?x))
(rule (love mary ?x) if	(boy ?x)(like ?x ?y)(pet ?y))
(rule (like ?x	car) if	(boy ?x))
(rule (like ?x	?y)  if	(boy ?x)(girl ?y))
(rule (like ?x	?y)  if	(girl ?x)(boy ?y))

;Occur-check!!
;(rule (like ?x	?y) if (like ?x	?z)(like ?y ?z))

(fact (smaller 0 3))
(fact (smaller 1 3))
(fact (smaller 2 3))
(fact (smaller 6 8))
(fact (smaller 6 9))

(rule (smaller ?x 6) if	(smaller ?x 3))
(rule (f ?x 0) if (smaller ?x 3) (!))
(rule (f ?x 2) if (smaller ?x 6) (!))
(rule (f ?x 4) if (smaller 6 ?x))

(rule (g ?x 0) if (smaller ?x 3))
(rule (g ?x 2) if (smaller ?x 6))
(rule (g ?x 4) if (smaller 6 ?x))

(fact (u 1)) (fact (u 2)) (fact	(u 3))
(fact (v 4)) (fact (v 5))
(fact (w 6)) (fact (w 7)) (fact	(w 8))

(rule (combin ?x ?y ?z)	if (u ?x)(v ?y)(w ?z))
(rule (combin-cut2 ?x ?y ?z) if	(u ?x)(v ?y)(!)(w ?z))
(rule (combin-cut1 ?x ?y ?z) if	(u ?x)(!)(v ?y)(w ?z))









;(defun	prove (goal binds)
;  (format t "~&Prove ~a" (get (get-index goal)	'rules))
;  (mapcan #'(lambda (rule)
;	       (let ((nr (rename-var rule)))
;		 (prove-all (cdr nr)
;			    (unify-binds (car goal) (car nr) binds)
;	     ) ) )
;	     (get (get-index goal) 'rules)
;) )

;(defun	prove-all (goals binds)
;  (cond
;	 ((null	binds) nil)
;	 ((null	goals) (list binds))
;	 (t (mapcan #'(lambda (one-solution)
;			(prove-all (rest goals)	one-solution))
;		    (prove goals binds)
;) )	 )  )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产福利国产秒拍| 久久综合网色—综合色88| 国产三级欧美三级日产三级99| 日韩福利电影在线| 日韩一区二区中文字幕| 美女一区二区久久| 精品国产乱码久久久久久图片| 国产精品一区二区无线| 欧美激情一区二区三区全黄| 91丨九色丨尤物| 亚洲制服欧美中文字幕中文字幕| 欧美日韩一区二区三区免费看| 日韩精品一二区| 日韩天堂在线观看| 国产精品12区| 亚洲一区视频在线观看视频| 欧美一区二区三区免费在线看| 久久99国产精品尤物| 国产欧美一区二区精品秋霞影院| 99在线精品一区二区三区| 亚洲精品国产高清久久伦理二区| 在线综合+亚洲+欧美中文字幕| 狠狠久久亚洲欧美| 国产精品国产三级国产aⅴ无密码| 日本韩国欧美一区二区三区| 日本中文在线一区| 国产精品私人影院| 欧美日本一区二区三区| 国产一区二区91| 中文字幕日韩av资源站| 91精品国产综合久久香蕉麻豆| 国产福利精品一区| 一区二区三区精品在线| 欧美成人三级电影在线| 99久久国产综合精品色伊| 日韩中文字幕麻豆| 国产精品女同互慰在线看| 欧美另类z0zxhd电影| 国产v综合v亚洲欧| 午夜视黄欧洲亚洲| 国产欧美一区二区三区网站 | 欧洲精品中文字幕| 久久成人免费电影| 一区二区成人在线| 国产日韩成人精品| 欧美一区日本一区韩国一区| 成人夜色视频网站在线观看| 青青草视频一区| 亚洲伦理在线精品| 国产片一区二区三区| 在线综合视频播放| 色婷婷av久久久久久久| 国产aⅴ综合色| 奇米影视在线99精品| 亚洲另类中文字| 欧美激情综合五月色丁香小说| 日韩一级高清毛片| 欧美日韩aaa| 色综合天天综合给合国产| 国内精品久久久久影院色 | 日日噜噜夜夜狠狠视频欧美人 | 夜色激情一区二区| 国产精品电影院| 久久久久九九视频| xf在线a精品一区二区视频网站| 欧美视频精品在线观看| 91色在线porny| 成人福利在线看| 高清av一区二区| 国产精品888| 国产尤物一区二区| 蜜臀av国产精品久久久久| 亚洲高清在线精品| 18欧美亚洲精品| ...av二区三区久久精品| 日韩视频一区二区三区在线播放| 色诱亚洲精品久久久久久| 国产精品香蕉一区二区三区| 日韩成人一级片| 亚洲国产日韩精品| 久久男人中文字幕资源站| 欧美大片一区二区| 欧美高清激情brazzers| 色综合久久99| 99re亚洲国产精品| 成人av中文字幕| 国产成a人亚洲精品| 精品亚洲成a人在线观看| 久久国产尿小便嘘嘘| 日本麻豆一区二区三区视频| 亚洲第一搞黄网站| 亚洲伊人伊色伊影伊综合网| ...av二区三区久久精品| 国产精品成人网| 国产精品久久网站| 欧美一区二区视频在线观看2020 | 欧美视频一区二区三区四区| 成人性生交大片免费看视频在线| 国产黄色精品网站| 国产成人精品免费视频网站| 国产一区二区三区黄视频 | 成人性生交大片| 免费人成精品欧美精品| 午夜精品久久久久久久久久| 亚洲午夜日本在线观看| 天天操天天色综合| 美女网站一区二区| 国产综合色产在线精品| 国产河南妇女毛片精品久久久| 国产激情一区二区三区四区| 播五月开心婷婷综合| 欧美日韩在线免费视频| 欧美日韩国产小视频| 欧美一区二区三区电影| 日韩欧美国产午夜精品| 久久看人人爽人人| 国产精品网站导航| 一区二区在线观看免费| 亚洲国产精品av| 亚洲少妇屁股交4| 香蕉乱码成人久久天堂爱免费| 天堂成人国产精品一区| 久久国产麻豆精品| 国产精品一区二区视频| 久久精品国产77777蜜臀| 99精品国产99久久久久久白柏| 欧美日韩中文字幕一区二区| 欧美一区二区三区四区久久 | 欧美一级欧美一级在线播放| 精品国产成人系列| 国产精品久久久久久久浪潮网站| 国产精品国产自产拍在线| 日本不卡一二三| 国产不卡高清在线观看视频| 欧美影片第一页| 久久久国产精华| 亚洲电影在线免费观看| 国内不卡的二区三区中文字幕| 国产一区二区三区免费观看| 91精品国产aⅴ一区二区| 国产免费观看久久| 午夜一区二区三区视频| 国产精品综合视频| 欧美亚洲精品一区| 亚洲精品一区二区精华| 久久丝袜美腿综合| 六月婷婷色综合| 一本在线高清不卡dvd| 精品少妇一区二区三区在线播放 | 欧美日韩你懂得| 国产精品国产成人国产三级| 蜜桃一区二区三区四区| a亚洲天堂av| 欧美大尺度电影在线| 亚洲免费av观看| 懂色av一区二区在线播放| 7777女厕盗摄久久久| 日本一区二区三区四区在线视频| 经典三级在线一区| 91精品久久久久久蜜臀| 国产精品美女视频| 九一久久久久久| 欧美精品tushy高清| 最新不卡av在线| 久久精品噜噜噜成人88aⅴ| 91精品国产91久久久久久一区二区| 中文字幕在线免费不卡| 国产高清精品久久久久| 日韩美女视频在线| 亚洲成人自拍网| 欧美综合一区二区| 亚洲第一狼人社区| 在线区一区二视频| 成人欧美一区二区三区| 国产91在线观看丝袜| 久久久久国产精品麻豆ai换脸 | 久久众筹精品私拍模特| 亚洲最新视频在线播放| 97se亚洲国产综合自在线| 久久免费视频色| 激情五月播播久久久精品| 欧美视频在线观看一区二区| 一区二区三区在线不卡| aaa欧美日韩| 亚洲人成网站色在线观看 | 国产精品天干天干在观线| 男人的j进女人的j一区| 3atv在线一区二区三区| 天天综合网 天天综合色| 欧美日韩国产综合视频在线观看| 亚洲第一福利一区| 欧美日韩国产色站一区二区三区| 亚洲精品va在线观看| 欧美性高清videossexo| 亚洲一区在线观看免费观看电影高清| 欧美午夜精品免费| 日韩精品乱码av一区二区| 日韩欧美一二三四区| 另类的小说在线视频另类成人小视频在线| 国产**成人网毛片九色|