static void Main(string[] args) { try { var container = Container.BuildContainer(); InputValidation.CheckInputParameters(args); var inputReader = container.Resolve <IWorkParametersProvider>(); var instructions = inputReader.Read(args[0]); var positionState = container.Resolve <PositionState>(); positionState.Facing = instructions.PositionState.Facing; positionState.X = instructions.PositionState.X; positionState.Y = instructions.PositionState.Y; positionState.LeftBattery = instructions.PositionState.LeftBattery; var parsedMap = instructions.Map.ToPlaceStatuses(); Check.That(parsedMap.IsSucceed, "Map has not been parsed correctly"); positionState.SetMap(parsedMap.Matrix); var robot = container.Resolve <IMachineCleaner>(new ParameterOverride("instructions", instructions.Commands)); var result = robot.StartClean(); var fileSaver = new FileWriter(result); fileSaver.Save(args[1]); ConsoleLogger.WriteSuccessInfo($"Result of program is located in {args[1]}"); } catch (Exception ex) { ConsoleLogger.WriteError($"Program is ended with error. {ex.Message}"); } Console.ReadKey(); }