【问题标题】:eight queen problem with permutation in prologprolog中排列的八皇后问题
【发布时间】:2020-07-20 16:51:53
【问题描述】:

我正在使用此代码解决八皇后问题,但我对 del 谓词有疑问。 有没有人可以帮助我理解它是如何工作的?

代码在这里:

solution(Queens):- 
  permutation([1,2,3,4,5,6,7,8],Queens), 
  safe(Queens).

permutation([],[]).    
permutation([Head|Tail],PermList):- 
 permutation(Tail,PermTail), 
 del(Head,PermList,PermTail).

del(A,[A|List],List).
del(A,[B|List],[B|List1]):- 
 del(A,List,List1).

safe([]).
safe([Queen|Others]):- 
 safe(Others), 
 noattack(Queen,Others,1).

noattack(_,[],_).
noattack(Y,[Y1|Ylist],Xdist):- 
 Y1-Y=\=Xdist,
 Y-Y1 =\= Xdist,
 Dist1 is Xdist +1, 
 noattack(Y,Ylist,Dist1).

【问题讨论】:

  • Is there anybody that can help me to understand how it works? 当然我们很多人都可以。我为另一个 N Queens question 做过一次。不打算再做一次,但我使用的一些方法在这里同样适用。这是一个提示,这是一个生成和测试解决方案。
  • 如果您感谢我的另一个答案,那么为什么不对另一个答案投赞成票?

标签: prolog n-queens


【解决方案1】:

关于 del 谓词,我试着在这里解释一下:Prolog: How does delete/3 works?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-24
    • 2021-08-23
    • 2021-02-02
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多