最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 示例分享---邏輯推理編程解決八皇后

 更新時(shí)間:2014年07月20日 15:54:26   投稿:hebedich  
八皇后問(wèn)題,是一個(gè)古老而著名的問(wèn)題,是回溯算法的典型案例。該問(wèn)題是國(guó)際西洋棋棋手馬克斯·貝瑟爾于1848年提出:在8X8格的國(guó)際象棋上擺放八個(gè)皇后,使其不能互相攻擊,即任意兩個(gè)皇后都不能處于同一行、同一列或同一斜線上,問(wèn)有多少種擺法。

可以和Haskell , Prolog 一樣做到模式匹配,

建立邏輯推到規(guī)則,描述問(wèn)題,得出答案。

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)文章

最新評(píng)論

封丘县| 吉林省| 都安| 锡林浩特市| 涞水县| 沾化县| 朝阳市| 通化市| 新沂市| 鄂尔多斯市| 沙坪坝区| 宜川县| 周至县| 石泉县| 眉山市| 吉安市| 辽阳县| 日土县| 七台河市| 高淳县| 宜兰市| 罗甸县| 万安县| 镇远县| 保德县| 石狮市| 富平县| 合水县| 清涧县| 天水市| 桓台县| 彭阳县| 云霄县| 磐安县| 望谟县| 本溪| 蓝山县| 延川县| 小金县| 谢通门县| 河北区|