Exemplo n.º 1
0
        private void innerSolver(List <WitchCard> leftCards, Board board)
        {
            if (board.IsBoardCompleted())
            {
                print(board);
                return;
            }

            for (int i = 0; i < leftCards.Count; i++)
            {
                WitchCard chosenCard = leftCards[i];
                leftCards.RemoveAt(i);

                for (int j = 0; j < WitchCard.MAX_ROTATIONS; j++)
                {
                    if (board.TryAddNextCard(chosenCard))
                    {
                        innerSolver(leftCards, board);
                        board.RemoveLastCardFromBoard();
                    }

                    chosenCard.RotateCardClockwise();
                }

                leftCards.Insert(0, chosenCard);
            }
        }