列出Prolog中4x4板上的所有可能操作

时间:2012-04-07 19:03:45

标签: prolog

如何(例如)一个玩家在4x4棋盘(8个不同的角色)中执行某些操作后,如何列出所有可能的棋盘?

π应该是,例如:

([1,2,3,4,5,6,7,8])

每次自动播放时都无法重复使用。

董事会应该像这个董事会

([1,1,-,-],(1,2,-,-)...(1,3,-,-)(1,4,-,-)
 [2,1,-,-],(2,2,-,-)...(2,3,-,-)(2,4,-,-)
 [3,1,-,-],(3,2,-,-)...(3,3,-,-)(3,4,-,-)
 [4,1,-,-],(4,2,-,-)...(4,3,-,-)(4,4,-,-)

每轮一名玩家将一个中介放在棋盘上直到它满了。

1 个答案:

答案 0 :(得分:2)

我假设你有一个类似board0_move_board/3的谓词,这是一个三元组关系,它是一个B板,一个移动M,以及在B上移动M后得到的板。此外,我假设你有一个谓词board_move/2将董事会与该董事会可能采取的行动联系起来,并在连续回溯时提供所有可能的行动。使用这些谓词,您可以获得所有可能的电路板:

findall(Board, (board_move(Board0, Move), board0_move_board(Board0, Move, Board)), Boards)