2012-04-07 8 views
5

¿Cómo puedo enumerar todas las tablas posibles después de (por ejemplo) que un jugador realice alguna acción en una tabla 4x4 (con 8 piones diferentes)?Enumerar todas las acciones posibles en una placa 4x4 en Prolog

Los piones deben ser, por ejemplo:

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

y cada vez que juegue uno de forma automática no puede volver a utilizarse.

La junta debe ser como este tablero

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

y un jugador por ronda pone un pión en el tablero hasta que sea completa.

Respuesta

2

Supongo que tiene un predicado como board0_move_board/3, que es una relación ternaria entre un tablero B, un movimiento M, y el tablero resultante después del movimiento M sobre B. Además, supongo que tiene un predicado board_move/2 que relaciona un tablero con un movimiento que es posible en ese tablero, y al retroceder da sucesivamente todos los movimientos posibles. Con estos predicados, puede obtener todas las juntas posibles con:

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

Sí me dieron el primer predicado que usted describió como "board0_move_board/3", que conecta un movimiento jugador con el tablero y los resultados de la tabla con que se mueven hecho, pero no tengo el segundo predicado board_move/2..at al menos ahora con la forma en que describes .y también debo llenar mi predicado de esta forma "moves ((Color, _), Board, NewBoardsList): – user1319472

+0

anyone para obtener más ayuda? – user1319472

Cuestiones relacionadas