public void Solve_AB_Logs() { var logger = new MemoryEventLogger(); var world = WorldBuilder.CreateForExercise2("A,B", logger); var hours = world.Solve(); var actual = logger.Logs; var expected = new [] { "{\"event\":\"DEPART\",\"time\":0,\"transport_id\":0,\"kind\":\"Truck\",\"location\":\"FACTORY\",\"destination\":\"PORT\",\"cargo\":[{\"cargo_id\":0,\"destination\":\"A\",\"origin\":\"FACTORY\"}]}", "{\"event\":\"DEPART\",\"time\":0,\"transport_id\":1,\"kind\":\"Truck\",\"location\":\"FACTORY\",\"destination\":\"B\",\"cargo\":[{\"cargo_id\":1,\"destination\":\"B\",\"origin\":\"FACTORY\"}]}", "{\"event\":\"ARRIVE\",\"time\":1,\"transport_id\":0,\"kind\":\"Truck\",\"location\":\"PORT\",\"cargo\":[{\"cargo_id\":0,\"destination\":\"A\",\"origin\":\"FACTORY\"}]}", "{\"event\":\"DEPART\",\"time\":1,\"transport_id\":0,\"kind\":\"Truck\",\"location\":\"PORT\",\"destination\":\"FACTORY\",\"cargo\":[]}", "{\"event\":\"LOAD\",\"time\":1,\"duration\":1,\"transport_id\":2,\"kind\":\"Ship\",\"location\":\"PORT\",\"cargo\":[{\"cargo_id\":0,\"destination\":\"A\",\"origin\":\"FACTORY\"}]}", "{\"event\":\"ARRIVE\",\"time\":2,\"transport_id\":0,\"kind\":\"Truck\",\"location\":\"FACTORY\",\"cargo\":[]}", "{\"event\":\"DEPART\",\"time\":2,\"transport_id\":2,\"kind\":\"Ship\",\"location\":\"PORT\",\"destination\":\"A\",\"cargo\":[{\"cargo_id\":0,\"destination\":\"A\",\"origin\":\"FACTORY\"}]}", "{\"event\":\"ARRIVE\",\"time\":5,\"transport_id\":1,\"kind\":\"Truck\",\"location\":\"B\",\"cargo\":[{\"cargo_id\":1,\"destination\":\"B\",\"origin\":\"FACTORY\"}]}", "{\"event\":\"DEPART\",\"time\":5,\"transport_id\":1,\"kind\":\"Truck\",\"location\":\"B\",\"destination\":\"FACTORY\",\"cargo\":[]}", "{\"event\":\"ARRIVE\",\"time\":8,\"transport_id\":2,\"kind\":\"Ship\",\"location\":\"A\",\"cargo\":[{\"cargo_id\":0,\"destination\":\"A\",\"origin\":\"FACTORY\"}]}", "{\"event\":\"UNLOAD\",\"time\":8,\"duration\":1,\"transport_id\":2,\"kind\":\"Ship\",\"location\":\"PORT\",\"cargo\":[{\"cargo_id\":0,\"destination\":\"A\",\"origin\":\"FACTORY\"}]}", "{\"event\":\"DEPART\",\"time\":9,\"transport_id\":2,\"kind\":\"Ship\",\"location\":\"A\",\"destination\":\"PORT\",\"cargo\":[]}" }; Assert.That(actual.Count, Is.EqualTo(12)); Assert.That(actual, Is.EquivalentTo(expected)); }
public void Solve_B_LoadUnloadShip() { var logger = new EmptyEventLogger(); var world = WorldBuilder.CreateForExercise2("B", logger); var hours = world.Solve(); Assert.That(hours, Is.EqualTo(5)); }
private static void SolveInput(string[] args) { var input = args[0]; var eventLogger = new FileEventLogger(input.Replace(",", "")); var world = WorldBuilder.CreateForExercise2(input, eventLogger); var totalTime = world.Solve(); Console.WriteLine($"Total time {totalTime}"); }
private static void CreateTraces() { var inputs = new[] { "A", "B", "A,A", "B,B", "A,B", "A,B,B", "A,A,B,A,B,B,A,B", "A,B,B,B,A,B,A,A,A,B,B,B" }; inputs.ForEach(x => { var eventLogger = new FileEventLogger(x.Replace(",", "")); var world = WorldBuilder.CreateForExercise2(x, eventLogger); var totalTime = world.Solve(); Console.WriteLine($"Solve '{x}' total time '{totalTime}'"); }); }