2012-04-07 3 views
5

예를 들어 한 플레이어가 4x4 보드에서 8 개의 다른 pion으로 어떤 작업을 수행 한 후에 어떻게 모든 보드를 나열 할 수 있습니까?Prolog에서 4x4 보드의 가능한 모든 동작을 나열하십시오.

파이온 예를 들어 있어야한다 :

([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,-,-) 

그리고 라운드 당 하나의 플레이어가 보드에 하나 PION을두고이 보드처럼해야한다.

답변

2

이동 M이 B에서 만들어진 후 보드 B, 이동 M과 결과 보드 사이의 삼자 관계 인 조건부가 board0_move_board/3이라고 가정합니다. 또한 술어 board_move/2이 있다고 가정합니다. 보드를 해당 보드에서 가능한 동작과 연관시키고 역 추적으로 가능한 모든 동작을 제공합니다. ,

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

예 난 당신이 보드 선수의 움직임을 연결하고 수행하는 이동과 함께 보드를 결과 "board0_move_board/3"으로 설명 된 제 조건을 가지고 이러한 조건으로, 당신은 모든 가능한 보드를 얻을 수 있습니다 하지만 난 두 번째 술어 board_move/2..at 적어도 당신이 설명하는 방식으로. 그리고 또한이 방식으로 내 술어를 작성해야합니다 "이동 ((색상, _), 보드, NewBoardsList) : – user1319472

+0

누구든지 fyrther 도움을 위해? – user1319472

관련 문제