Пример #1
0
        public void Solve()
        {
            int counter = 1;
            while(true)
            {
                var solution = algorithm.GetNextSolution();
                if (solution == null)
                {
                    Console.WriteLine("No more solutions.");
                    break;
                }

                Console.Write(string.Format("Trying solution {0}... ", counter++));

                var simulator = new Simulator(puzzle, solution);
                var result = simulator.Run();
                Console.WriteLine(result);

                if (result == SimulationResult.Solved)
                {
                    Console.WriteLine("Solution:");
                    Console.WriteLine(solution.ToString());
                    break;
                }
            }
        }
Пример #2
0
 public void CrashLeft()
 {
     var puzzle = new Puzzle(File.ReadAllText("../../Puzzles/Cargo101.json"));
     var solution = new Solution();
     solution.F1.AddInstruction(InstructionType.Left);
     var simulator = new Simulator(puzzle, solution);
     Assert.AreEqual(SimulationResult.CrashedIntoLeftWall, simulator.Run());
 }
Пример #3
0
 public void DetectInfiniteLoop()
 {
     var puzzle = new Puzzle(File.ReadAllText("../../Puzzles/Cargo101.json"));
     var solution = new Solution();
     solution.F1.AddInstruction(InstructionType.Down);
     solution.F1.AddInstruction(InstructionType.F1);
     var simulator = new Simulator(puzzle, solution);
     Assert.AreEqual(SimulationResult.InfiniteLoop, simulator.Run());
 }
Пример #4
0
 public void CallFunction()
 {
     var puzzle = new Puzzle(File.ReadAllText("../../Puzzles/Cargo101.json"));
     var solution = new Solution();
     solution.F1.AddInstruction(InstructionType.F2);
     solution.F1.AddInstruction(InstructionType.Right);
     solution.F1.AddInstruction(InstructionType.F2);
     solution.F2.AddInstruction(InstructionType.Down);
     var simulator = new Simulator(puzzle, solution);
     Assert.AreEqual(SimulationResult.Solved, simulator.Run());
 }
Пример #5
0
 public void CrashIntoBoxes()
 {
     var puzzle = new Puzzle(File.ReadAllText("../../Puzzles/WalkingPiles.json"));
     var solution = new Solution();
     solution.F1.AddInstruction(InstructionType.Down);
     solution.F1.AddInstruction(InstructionType.Right);
     solution.F1.AddInstruction(InstructionType.Down);
     solution.F1.AddInstruction(InstructionType.Left);
     solution.F1.AddInstruction(InstructionType.F1);
     var simulator = new Simulator(puzzle, solution);
     Assert.AreEqual(SimulationResult.CrashedIntoBoxes, simulator.Run());
 }
Пример #6
0
 public void EmptySolution()
 {
     var puzzle = new Puzzle(File.ReadAllText("../../Puzzles/Cargo101.json"));
     var solution = new Solution();
     var simulator = new Simulator(puzzle, solution);
     Assert.AreEqual(SimulationResult.Finished, simulator.Run());
 }