Пример #1
0
        public void TestInfer_SolveColoumCardDesk_Sub()
        {
            Desk tempDesk1 = new Desk();

            tempDesk1.AllCardOnDesk.SortedCard[0] = new Card(Card.Type.Diamonds, Card.Number.King);
            tempDesk1.AllCardOnDesk.SortedCard[1] = new Card(Card.Type.Heart, Card.Number.Queen);
            tempDesk1.AllCardOnDesk.SortedCard[2] = new Card(Card.Type.Spade, Card.Number.Jack);
            tempDesk1.AllCardOnDesk.SortedCard[3] = new Card(Card.Type.Club, Card.Number.Ten);

            tempDesk1.AddNewCardInColoum(1, new Card(Card.Type.Heart, Card.Number.King));
            tempDesk1.AddNewCardInColoum(2, new Card(Card.Type.Spade, Card.Number.King));
            tempDesk1.AddNewCardInColoum(3, new Card(Card.Type.Club, Card.Number.King));
            tempDesk1.AddNewCardInColoum(2, new Card(Card.Type.Spade, Card.Number.Queen));
            tempDesk1.AddNewCardInColoum(3, new Card(Card.Type.Club, Card.Number.Queen));
            tempDesk1.AddNewCardInColoum(3, new Card(Card.Type.Club, Card.Number.Jack));


            InferManager.GetInstance().ClearInferData();
            InferManager.GetInstance().SetStartDesk(tempDesk1);
            var result = InferManager.GetInstance().StartInfer();

            if (!result.IsSolved)
            {
                throw new Exception(result.Message);
            }
        }
Пример #2
0
        public void TestInfer_SolveColoumCardDesk()
        {
            Desk tempDesk1 = new Desk();

            for (int coloumIndex = 0; coloumIndex < 4; coloumIndex++)
            {
                for (Card.Number i = Card.Number.King; i >= Card.Number.Arch; i--)
                {
                    tempDesk1.AddNewCardInColoum(coloumIndex, new Card((Card.Type)coloumIndex + 1, i));
                }
            }

            InferManager.GetInstance().ClearInferData();
            InferManager.GetInstance().SetStartDesk(tempDesk1);
            var result = InferManager.GetInstance().StartInfer();

            if (!result.IsSolved)
            {
                throw new Exception(result.Message);
            }
        }
Пример #3
0
        public void TestInfer_SolveFreeCardDesk()
        {
            Desk tempDesk1 = new Desk();

            for (int i = 0; i < tempDesk1.AllCardOnDesk.FreeCard.Length; i++)
            {
                tempDesk1.AddNewCardInFreeCard(new Card(Card.Type.Diamonds, Card.Number.King - i));
            }
            tempDesk1.AllCardOnDesk.SortedCard[(int)Card.Type.Diamonds - 1] = new Card(Card.Type.Diamonds, Card.Number.King - tempDesk1.AllCardOnDesk.FreeCard.Length);
            tempDesk1.AllCardOnDesk.SortedCard[(int)Card.Type.Club - 1]     = new Card(Card.Type.Club, Card.Number.King);
            tempDesk1.AllCardOnDesk.SortedCard[(int)Card.Type.Heart - 1]    = new Card(Card.Type.Heart, Card.Number.King);
            tempDesk1.AllCardOnDesk.SortedCard[(int)Card.Type.Spade - 1]    = new Card(Card.Type.Spade, Card.Number.King);

            InferManager.GetInstance().ClearInferData();
            InferManager.GetInstance().SetStartDesk(tempDesk1);
            var result = InferManager.GetInstance().StartInfer();

            if (!result.IsSolved)
            {
                throw new Exception(result.Message);
            }
        }
Пример #4
0
        public override void Execute()
        {
            string location = CommandManager.GetInstance().RemainCommand.Trim();
            string json;

            try
            {
                json = File.ReadAllText(location);
            }
            catch (FileNotFoundException)
            {
                Console.WriteLine("File not found");
                return;
            }

            Desk targetDesk = Desk.GetDeskFromJson(json);

            Console.WriteLine(targetDesk.Pretty());

            try
            {
                targetDesk.CheckError();
            }
            catch (ErrorInDeskException e)
            {
                Console.WriteLine($"Error: {e}");
                return;
            }

            InferManager.GetInstance().ClearInferData();
            InferManager.GetInstance().SetStartDesk(targetDesk);
            var result = InferManager.GetInstance().StartInfer();

            Console.WriteLine(result.Message);
            foreach (var singleProcedure in result.Procedures)
            {
                Console.WriteLine(singleProcedure.MoveMessage);
            }
        }