新聞中心
邏輯編程可用于解決許多問題,如8拼圖,斑馬拼圖,數(shù)獨(dú),N皇后等。在這里,舉例說明斑馬拼圖的變體如下 -

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括武漢網(wǎng)站建設(shè)、武漢網(wǎng)站制作、武漢網(wǎng)頁制作以及武漢網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,武漢網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到武漢省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
有五間房子。
英國人住在紅房子里。
瑞典人有一只狗。
丹麥人喝茶。
綠房子在白房子的左邊。
他們在綠房子里喝咖啡。
吸Pall Mall的人有鳥。
吸Dunhill在的人黃色房子里。
在中間的房子里,他們喝牛奶。
挪威人住在第一宮。
那個(gè)抽Blend的男人住在貓屋旁邊的房子里。
在他們有一匹馬的房子旁邊的房子里,他們吸Dunhill煙。
抽Blue Master的人喝啤酒。
德國人吸Prince煙。
挪威人住在藍(lán)房子旁邊。
他們在房子旁邊的房子里喝水,在那里吸 Blend 煙。在 Python 的幫助下解決誰有斑馬的問題。 導(dǎo)入必要的軟件包 -
from kanren import *
from kanren.core import lall
import time 現(xiàn)在,我們需要定義兩個(gè)函數(shù) - left()和 next()來查找哪個(gè)房屋左邊或接近誰的房子 -
def left(q, p, list):
return membero((q,p), zip(list, list[1:]))
def next(q, p, list):
return conde([left(q, p, list)], [left(p, q, list)]) 現(xiàn)在,聲明一個(gè)變量:houses,如下 -
houses = var() 需要在 lall 包的幫助下定義規(guī)則如下。
有5間房子 -
rules_zebraproblem = lall(
(eq, (var(), var(), var(), var(), var()), houses),
(membero,('Englishman', var(), var(), var(), 'red'), houses),
(membero,('Swede', var(), var(), 'dog', var()), houses),
(membero,('Dane', var(), 'tea', var(), var()), houses),
(left,(var(), var(), var(), var(), 'green'),
(var(), var(), var(), var(), 'white'), houses),
(membero,(var(), var(), 'coffee', var(), 'green'), houses),
(membero,(var(), 'Pall Mall', var(), 'birds', var()), houses),
(membero,(var(), 'Dunhill', var(), var(), 'yellow'), houses),
(eq,(var(), var(), (var(), var(), 'milk', var(), var()), var(), var()), houses),
(eq,(('Norwegian', var(), var(), var(), var()), var(), var(), var(), var()), houses),
(next,(var(), 'Blend', var(), var(), var()),
(var(), var(), var(), 'cats', var()), houses),
(next,(var(), 'Dunhill', var(), var(), var()),
(var(), var(), var(), 'horse', var()), houses),
(membero,(var(), 'Blue Master', 'beer', var(), var()), houses),
(membero,('German', 'Prince', var(), var(), var()), houses),
(next,('Norwegian', var(), var(), var(), var()),
(var(), var(), var(), var(), 'blue'), houses),
(next,(var(), 'Blend', var(), var(), var()),
(var(), var(), 'water', var(), var()), houses),
(membero,(var(), var(), var(), 'zebra', var()), houses)
)現(xiàn)在,用前面的約束運(yùn)行解算器 -
solutions = run(0, houses, rules_zebraproblem)借助以下代碼,可以提取解算器的輸出 -
output_zebra = [house for house in solutions[0] if 'zebra' in house][0][0]以下代碼將打印解決方案 -
print ('\n'+ output_zebra + 'owns zebra.')上述代碼的輸出如下 -
German owns zebra. 當(dāng)前題目:創(chuàng)新互聯(lián)AI教程:AI人工智能解決難題
瀏覽路徑:http://fisionsoft.com.cn/article/dphejdh.html


咨詢
建站咨詢
