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; } } }
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()); }
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()); }
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()); }
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()); }
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()); }