5

在(例如)一名玩家在 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,-,-)

每轮一名玩家将一个π介子放在棋盘上,直到填满为止。

4

1 回答 1

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)
于 2012-04-07T23:19:40.443 回答