python 示例分享---邏輯推理編程解決八皇后
更新時間:2014年07月20日 15:54:26 投稿:hebedich
八皇后問題,是一個古老而著名的問題,是回溯算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾于1848年提出:在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列或同一斜線上,問有多少種擺法。
可以和Haskell , Prolog 一樣做到模式匹配,
建立邏輯推到規(guī)則,描述問題,得出答案。
from pyDatalog import pyDatalog pyDatalog.create_atoms( 'N, N1, X, Y, X0, X1, X2, X3, X4, X5, X6, X7' ) pyDatalog.create_atoms( 'ok, queens, next_queen, pred, pred2' ) size = 8 ok( X1, N, X2 ) <= ( X1 != X2 ) & ( X1 != X2 + N ) & ( X1 != X2 - N ) pred( N, N1 ) <= ( N > 1 ) & ( N1 == N - 1 ) queens( 1, X ) <= ( X1._in( range( size ) ) ) & ( X1 == X[0] ) queens( N, X ) <= pred( N, N1 ) & queens( N1, X[:-1] ) & next_queen( N, X ) pred2( N, N1 ) <= ( N > 2 ) & ( N1 == N - 1 ) next_queen( 2, X ) <= ( X1._in( range( 8 ) ) ) & ok( X[0], 1, X1 ) & ( X1 == X[1] ) next_queen( N, X ) <= pred2( N, N1 ) & next_queen( N1, X[1:] ) & ok( X[0], N1, X[-1] ) print( queens( size, ( X0, X1, X2, X3, X4, X5, X6, X7 ) ) )
相關(guān)文章
python+opencv實現(xiàn)目標(biāo)跟蹤過程
這篇文章主要介紹了python+opencv實現(xiàn)目標(biāo)跟蹤過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06django 微信網(wǎng)頁授權(quán)認證api的步驟詳解
這篇文章主要介紹了django 微信網(wǎng)頁授權(quán)認證api的步驟詳解,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07Python?GDAL庫在Anaconda環(huán)境中的配置方法
這篇文章主要介紹了Python?GDAL庫在Anaconda環(huán)境中的配置,本文介紹在Anaconda環(huán)境下,安裝Python中柵格、矢量等地理數(shù)據(jù)處理庫GDAL的方法,需要的朋友可以參考下2023-04-04Python使用統(tǒng)計函數(shù)繪制簡單圖形實例代碼
這篇文章主要給大家介紹了關(guān)于Python使用統(tǒng)計函數(shù)繪制簡單圖形的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05利用Django模版生成樹狀結(jié)構(gòu)實例代碼
這篇文章主要給大家介紹了關(guān)于利用Django模版生成樹狀結(jié)構(gòu)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05