【问题标题】:Removing a1 field from chess board in Clingo knight path program从 Clingo 骑士路径程序中的棋盘中删除 a1 字段
【发布时间】:2021-07-23 16:00:12
【问题描述】:

我需要对棋盘上的骑士路径和汉密尔顿循环进行一些模拟,但我想知道如果我从棋盘中排除某些字段会怎样

xchessboard(1..8).
ychessboard(1..8).
time(1..8*8+1).
xypos(X,Y) :- xchessboard(X), ychessboard(Y).
fromTO(X1,Y1,X2,Y2) :- xypos(X1,Y1), xypos(X2,Y2), 
|X1-X2| = 1, |Y1-Y2| = 2.
fromTO(X1,Y1,X2,Y2) :- xypos(X1,Y1), xypos(X2,Y2), 
|X1-X2| = 2, |Y1-Y2| = 1.
1 { position(I,X,Y) : xypos(X,Y) } 1 :- time(I).
:- time(I), time(I+1), xypos(X1,Y1), xypos(X2,Y2),
 position(I,X1,Y1), position(I+1,X2,Y2), not 
fromTO(X1,Y1,X2,Y2).
:- time(I1-1), time(I2), I1 < I2, xypos(X,Y),
 position(I1,X,Y), position(I2,X,Y).
:- position(1,X,Y), X+Y>2.
:- position(8*8+1,X,Y), X+Y>2

上面是 cligo 中的代码,我需要从这个棋盘中删除一些像 a1 这样的文件,但我不知道该怎么做,有人可以帮助我吗? 谢谢

【问题讨论】:

    标签: cycle answer-set-programming hamiltonian-cycle clingo knights-tour


    【解决方案1】:

    除了你的棋盘上没有“a1”而是一个 (1,1) 之外,只是不要推迟 xypos/2 事实对于您要删除的位置:

    xchessboard(1..8).
    ychessboard(1..8).
    remove(1,4).
    remove(3,2).
    xypos(X,Y) :- xchessboard(X), ychessboard(Y), not remove(X,Y).
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2021-07-31
      • 2017-05-03
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多