public static void Main(string[] args) { PrintInitMessage(); var inputStr = ReadMatrix(); try { var isDelimiterUsedInInput = inputStr.Contains(COLUMN_DELIMITER); var parser = new StringInputParser( isDelimiterUsedInInput ? COLUMN_DELIMITER : " "); var grid = parser.Parse(inputStr); PrintCostMatrix(grid); var pathProvider = new SmartPathProvider(MAX_COST); var lowestPath = pathProvider.GetLowestTraversalPath(grid); PrintTraversalPath(lowestPath); } catch (Exception ex) { PrintErrorMessage(ex.Message); } WaitForKeyPress(); }
public void Parse_WhenInputTextIsNullOrWhiteSpace_ReturnNull(string input) { var parser = new StringInputParser() as IInputParser; var result = parser.Parse(input); Assert.IsNull(result); }
public void Parse_WhenInputTextIsNullOrWhiteSpace_ReturnNull(string input) { var parser = new StringInputParser() as IInputParser; var result = parser.Parse(input); Assert.IsNull(result); }
public void Parse_GetFirstWordAsUserName(string input) { var parser = new StringInputParser() as IInputParser; var result = parser.Parse(input); Assert.IsNotNull(result); Assert.AreEqual("frantisek", result.UserName); }
public void Parse_GetFirstWordAsUserName(string input) { var parser = new StringInputParser() as IInputParser; var result = parser.Parse(input); Assert.IsNotNull(result); Assert.AreEqual("frantisek", result.UserName); }
public void Parse_WhenThereIsJustOneWord_ReturnCommandAndDataAsNull() { var parser = new StringInputParser() as IInputParser; var result = parser.Parse("frantisek"); Assert.IsNotNull(result); Assert.AreEqual("frantisek", result.UserName); Assert.IsNull(result.CommandText); Assert.IsNull(result.Data); }
public void Parse_GetTheRestAfterSecondWordAsData(string input, string expectedData) { var parser = new StringInputParser() as IInputParser; var result = parser.Parse(input); Assert.IsNotNull(result); Assert.AreEqual("frantisek", result.UserName); Assert.AreEqual("wall", result.CommandText); Assert.AreEqual(expectedData, result.Data); }
public void Parse_GetSecondWordAsCommand() { var parser = new StringInputParser() as IInputParser; var result = parser.Parse("frantisek command"); Assert.IsNotNull(result); Assert.AreEqual("frantisek", result.UserName); Assert.AreEqual("command", result.CommandText); Assert.IsNull(result.Data); }
public void Parse_GetTheRestAfterSecondWordAsData(string input, string expectedData) { var parser = new StringInputParser() as IInputParser; var result = parser.Parse(input); Assert.IsNotNull(result); Assert.AreEqual("frantisek", result.UserName); Assert.AreEqual("wall", result.CommandText); Assert.AreEqual(expectedData, result.Data); }
public void Parse_GetSecondWordAsCommand() { var parser = new StringInputParser() as IInputParser; var result = parser.Parse("frantisek command"); Assert.IsNotNull(result); Assert.AreEqual("frantisek", result.UserName); Assert.AreEqual("command", result.CommandText); Assert.IsNull(result.Data); }
public void Parse_WhenThereIsJustOneWord_ReturnCommandAndDataAsNull() { var parser = new StringInputParser() as IInputParser; var result = parser.Parse("frantisek"); Assert.IsNotNull(result); Assert.AreEqual("frantisek", result.UserName); Assert.IsNull(result.CommandText); Assert.IsNull(result.Data); }
public void Ensure_PathIsCalculatedSwiftly_OnLargeDataInput() { var inputStr = @"7, -35, -6, 0, -7, -10, -16, 27, 3, -29, 49, -24, -49, -13, -41, 25, 8, -33, -12, 24, 16, 13, -44, 22, -19, -18, 9, -26, -48, 5, 32, 50, 41, -38, -8, 46, -42, -30, 39, -14, -4, 31, -1, 12, -21, 34, 20, 44, 14, -2, 23, 15, 40, 45, -23, -25, 36, -9, 43, -32, 47, -27, -20, -5, -36, -34, 26, -43, 17, 29, 6, 38, -22, -39, 10, 19, 28, -37, -3, -45, 42, 33, -50, 37, -31, -40, 1, -47, -15, -28, 30, 2, 21, -17, 4, -46, 11, 18, 48, 35 -46, -45, -27, 1, 47, 19, 41, -22, -8, 6, -31, 21, -9, 32, -24, 15, -7, -33, -39, -15, -11, 40, 26, -40, -44, -42, -49, 49, 10, 24, -35, -47, 11, -18, -26, -5, -4, 42, -12, 33, 0, -23, 45, 48, 44, -13, -16, 43, 35, 46, 25, -36, 22, -50, -43, -28, 20, 13, -48, 4, -10, -17, 30, 38, 16, -25, 37, 2, 29, 27, 12, 14, 5, 17, -21, 31, -30, 39, -3, -2, 7, 18, -14, 3, -20, 34, -34, -38, -29, 36, 8, 28, -37, 9, -1, 50, 23, -41, -6, -32 47, 2, -4, -42, -29, -20, 4, -14, 29, 20, -21, 30, 32, 45, -19, -16, 35, 12, 1, 33, -47, 46, 16, 7, 3, 9, -34, 22, 43, -41, 6, 27, -8, -17, -37, 21, -35, -23, -9, -43, 26, -26, -5, -6, -48, 13, -46, 5, 39, 50, 11, 36, 41, 23, 25, 34, -24, 17, -39, 42, 14, -33, -27, -40, 15, 19, -15, -2, -13, -3, 48, -30, 24, -38, 0, 10, -12, 18, -1, -22, -36, -45, 38, -28, -44, 37, -11, 31, -31, 8, 44, 40, 49, -50, -7, -32, -25, 28, -18, -10 36, -13, -24, 28, -14, 1, -23, 40, -34, -31, -47, 25, 17, 8, 41, 12, -36, 24, -33, 46, 31, 15, 30, 29, -37, 49, -1, -26, -20, -43, -10, -3, 9, 43, -9, -38, -25, -44, 45, 14, -2, 27, 34, 11, -15, -41, 5, 32, -32, 19, -11, 47, 10, 39, -50, -49, 38, 48, 20, -39, -45, 22, -30, 42, 13, -6, 37, 4, -40, -19, 18, -21, 21, 6, -7, -17, -29, 3, -5, -18, -28, -22, 50, -46, 33, 44, 7, 23, 26, -42, -35, -48, -12, 35, -8, 2, -27, -4, 16, 0 -47, -1, 38, 18, -23, 47, 10, -15, 20, -46, 46, -7, -13, 34, 3, -12, -42, 4, 27, -28, -32, -38, -5, 7, -20, -26, -16, 49, -49, 39, 13, 16, 19, -10, 12, -40, 17, 48, 43, -29, 1, -41, -39, 25, -30, 37, 36, -17, 22, 33, 44, 26, -45, 42, 5, 45, -34, 6, -50, -3, 40, 32, 30, 35, -35, -21, 8, -8, 23, -37, 2, -22, -9, -14, -4, -48, -43, 29, -11, -44, -33, 21, -36, 28, -25, -27, 9, 14, 50, -19, -2, 0, 24, -31, -18, -24, 11, 41, -6, 15 15, 8, -23, 5, -46, -8, 39, -10, 38, -38, -41, 41, -15, 24, 40, -18, 3, 29, -16, -25, 45, -50, -32, -1, -37, -22, -7, 34, -44, 47, -40, -42, 32, -29, 2, 18, 23, 43, -12, -34, 16, -39, 12, 48, -17, 50, 11, 9, 6, -31, 35, -2, 20, -9, -21, -27, 37, 25, -47, -35, 46, -13, -30, -48, 19, -33, 1, -11, 17, -24, -19, 36, 28, 4, -5, -4, -43, -28, 21, 26, -3, -49, 44, -26, 0, 49, 22, -14, -45, -6, 10, 31, 42, 13, 27, 33, 14, 7, -36, 30 29, 10, 12, -40, -7, 16, -5, -8, 41, -37, -11, -30, 24, 0, 13, 6, 23, 36, 19, 11, -49, 2, 8, 46, 28, -22, -17, -9, 26, 5, -36, -25, -42, -41, 30, 39, -44, -21, -12, -34, 37, -50, 18, -20, -39, -2, -31, -10, 21, -43, 20, 17, 35, 3, -45, 42, 50, -48, -29, 33, 31, -24, 40, 34, 49, 7, -28, -1, 9, -3, 1, -47, -19, -4, -13, -27, 22, -26, -46, 44, -35, 15, 45, -33, 38, -14, -38, 48, -16, 4, 32, 27, -18, -6, -15, 47, 43, -32, -23, 14 32, 7, 28, 34, 31, 27, 35, -33, -45, -3, -16, 44, -12, 3, -40, -2, 36, -10, -38, -25, 15, 14, 12, 4, -20, -48, 1, -37, -28, 49, 10, -30, -35, -21, -31, -27, -39, -6, -29, 9, 20, 30, 25, 22, 5, -49, 8, 21, 19, -43, -18, -22, 50, -47, 17, 41, 38, -24, 33, -17, 39, 13, -13, -11, -34, 37, -9, 11, 16, 29, -46, -42, 6, -41, 47, 2, 46, -44, -15, -23, -19, 40, 43, 18, -50, 23, -26, -32, 0, 45, -7, 26, -1, -8, 42, -14, 48, -5, 24, -36 -18, 18, 21, 44, -45, 1, -31, -11, -47, -5, 28, -17, -10, -16, 32, 34, -4, 12, 39, 9, -48, -32, -41, 45, 24, -22, 14, -7, 42, 20, -39, -27, -9, 19, 38, 25, 23, 46, 43, -29, -33, -14, 13, -34, 4, -12, 26, -23, 49, -8, 5, 30, -42, 10, 6, -30, -6, -25, 3, 17, -36, -38, 40, -20, -13, 29, 0, -50, -1, -46, 48, -21, -44, 8, 22, -15, 27, -26, -35, 11, -2, -40, 2, 36, 33, -28, 35, -24, 50, 37, 7, -37, -49, -43, -19, 15, 41, 16, 47, -3 -23, 43, -8, -3, 23, 41, 26, 19, 14, 34, 6, 4, 2, 50, 7, 10, 46, -21, 9, 29, -6, 21, 12, -24, -17, -22, -46, -32, -34, -35, -11, -19, -28, -1, 48, 28, 27, 3, 20, -42, -2, -25, -45, 30, -47, 13, -18, -30, 37, 5, -26, 36, -33, 32, -7, 24, -50, 22, 25, -39, -27, 42, 31, -9, -13, -5, 18, 39, -20, -14, 8, 11, 45, 35, -16, -37, 16, 40, -12, 38, -40, 49, -38, -41, 47, 44, 33, -44, -10, -4, -15, 15, 17, -48, -49, -29, 1, -31, -43, -36 7, -35, -6, 0, -7, -10, -16, 27, 3, -29, 49, -24, -49, -13, -41, 25, 8, -33, -12, 24, 16, 13, -44, 22, -19, -18, 9, -26, -48, 5, 32, 50, 41, -38, -8, 46, -42, -30, 39, -14, -4, 31, -1, 12, -21, 34, 20, 44, 14, -2, 23, 15, 40, 45, -23, -25, 36, -9, 43, -32, 47, -27, -20, -5, -36, -34, 26, -43, 17, 29, 6, 38, -22, -39, 10, 19, 28, -37, -3, -45, 42, 33, -50, 37, -31, -40, 1, -47, -15, -28, 30, 2, 21, -17, 4, -46, 11, 18, 48, 35 -46, -45, -27, 1, 47, 19, 41, -22, -8, 6, -31, 21, -9, 32, -24, 15, -7, -33, -39, -15, -11, 40, 26, -40, -44, -42, -49, 49, 10, 24, -35, -47, 11, -18, -26, -5, -4, 42, -12, 33, 0, -23, 45, 48, 44, -13, -16, 43, 35, 46, 25, -36, 22, -50, -43, -28, 20, 13, -48, 4, -10, -17, 30, 38, 16, -25, 37, 2, 29, 27, 12, 14, 5, 17, -21, 31, -30, 39, -3, -2, 7, 18, -14, 3, -20, 34, -34, -38, -29, 36, 8, 28, -37, 9, -1, 50, 23, -41, -6, -32 47, 2, -4, -42, -29, -20, 4, -14, 29, 20, -21, 30, 32, 45, -19, -16, 35, 12, 1, 33, -47, 46, 16, 7, 3, 9, -34, 22, 43, -41, 6, 27, -8, -17, -37, 21, -35, -23, -9, -43, 26, -26, -5, -6, -48, 13, -46, 5, 39, 50, 11, 36, 41, 23, 25, 34, -24, 17, -39, 42, 14, -33, -27, -40, 15, 19, -15, -2, -13, -3, 48, -30, 24, -38, 0, 10, -12, 18, -1, -22, -36, -45, 38, -28, -44, 37, -11, 31, -31, 8, 44, 40, 49, -50, -7, -32, -25, 28, -18, -10 36, -13, -24, 28, -14, 1, -23, 40, -34, -31, -47, 25, 17, 8, 41, 12, -36, 24, -33, 46, 31, 15, 30, 29, -37, 49, -1, -26, -20, -43, -10, -3, 9, 43, -9, -38, -25, -44, 45, 14, -2, 27, 34, 11, -15, -41, 5, 32, -32, 19, -11, 47, 10, 39, -50, -49, 38, 48, 20, -39, -45, 22, -30, 42, 13, -6, 37, 4, -40, -19, 18, -21, 21, 6, -7, -17, -29, 3, -5, -18, -28, -22, 50, -46, 33, 44, 7, 23, 26, -42, -35, -48, -12, 35, -8, 2, -27, -4, 16, 0 -47, -1, 38, 18, -23, 47, 10, -15, 20, -46, 46, -7, -13, 34, 3, -12, -42, 4, 27, -28, -32, -38, -5, 7, -20, -26, -16, 49, -49, 39, 13, 16, 19, -10, 12, -40, 17, 48, 43, -29, 1, -41, -39, 25, -30, 37, 36, -17, 22, 33, 44, 26, -45, 42, 5, 45, -34, 6, -50, -3, 40, 32, 30, 35, -35, -21, 8, -8, 23, -37, 2, -22, -9, -14, -4, -48, -43, 29, -11, -44, -33, 21, -36, 28, -25, -27, 9, 14, 50, -19, -2, 0, 24, -31, -18, -24, 11, 41, -6, 15 15, 8, -23, 5, -46, -8, 39, -10, 38, -38, -41, 41, -15, 24, 40, -18, 3, 29, -16, -25, 45, -50, -32, -1, -37, -22, -7, 34, -44, 47, -40, -42, 32, -29, 2, 18, 23, 43, -12, -34, 16, -39, 12, 48, -17, 50, 11, 9, 6, -31, 35, -2, 20, -9, -21, -27, 37, 25, -47, -35, 46, -13, -30, -48, 19, -33, 1, -11, 17, -24, -19, 36, 28, 4, -5, -4, -43, -28, 21, 26, -3, -49, 44, -26, 0, 49, 22, -14, -45, -6, 10, 31, 42, 13, 27, 33, 14, 7, -36, 30 29, 10, 12, -40, -7, 16, -5, -8, 41, -37, -11, -30, 24, 0, 13, 6, 23, 36, 19, 11, -49, 2, 8, 46, 28, -22, -17, -9, 26, 5, -36, -25, -42, -41, 30, 39, -44, -21, -12, -34, 37, -50, 18, -20, -39, -2, -31, -10, 21, -43, 20, 17, 35, 3, -45, 42, 50, -48, -29, 33, 31, -24, 40, 34, 49, 7, -28, -1, 9, -3, 1, -47, -19, -4, -13, -27, 22, -26, -46, 44, -35, 15, 45, -33, 38, -14, -38, 48, -16, 4, 32, 27, -18, -6, -15, 47, 43, -32, -23, 14 32, 7, 28, 34, 31, 27, 35, -33, -45, -3, -16, 44, -12, 3, -40, -2, 36, -10, -38, -25, 15, 14, 12, 4, -20, -48, 1, -37, -28, 49, 10, -30, -35, -21, -31, -27, -39, -6, -29, 9, 20, 30, 25, 22, 5, -49, 8, 21, 19, -43, -18, -22, 50, -47, 17, 41, 38, -24, 33, -17, 39, 13, -13, -11, -34, 37, -9, 11, 16, 29, -46, -42, 6, -41, 47, 2, 46, -44, -15, -23, -19, 40, 43, 18, -50, 23, -26, -32, 0, 45, -7, 26, -1, -8, 42, -14, 48, -5, 24, -36 -18, 18, 21, 44, -45, 1, -31, -11, -47, -5, 28, -17, -10, -16, 32, 34, -4, 12, 39, 9, -48, -32, -41, 45, 24, -22, 14, -7, 42, 20, -39, -27, -9, 19, 38, 25, 23, 46, 43, -29, -33, -14, 13, -34, 4, -12, 26, -23, 49, -8, 5, 30, -42, 10, 6, -30, -6, -25, 3, 17, -36, -38, 40, -20, -13, 29, 0, -50, -1, -46, 48, -21, -44, 8, 22, -15, 27, -26, -35, 11, -2, -40, 2, 36, 33, -28, 35, -24, 50, 37, 7, -37, -49, -43, -19, 15, 41, 16, 47, -3 -23, 43, -8, -3, 23, 41, 26, 19, 14, 34, 6, 4, 2, 50, 7, 10, 46, -21, 9, 29, -6, 21, 12, -24, -17, -22, -46, -32, -34, -35, -11, -19, -28, -1, 48, 28, 27, 3, 20, -42, -2, -25, -45, 30, -47, 13, -18, -30, 37, 5, -26, 36, -33, 32, -7, 24, -50, 22, 25, -39, -27, 42, 31, -9, -13, -5, 18, 39, -20, -14, 8, 11, 45, 35, -16, -37, 16, 40, -12, 38, -40, 49, -38, -41, 47, 44, 33, -44, -10, -4, -15, 15, 17, -48, -49, -29, 1, -31, -43, -36 7, -35, -6, 0, -7, -10, -16, 27, 3, -29, 49, -24, -49, -13, -41, 25, 8, -33, -12, 24, 16, 13, -44, 22, -19, -18, 9, -26, -48, 5, 32, 50, 41, -38, -8, 46, -42, -30, 39, -14, -4, 31, -1, 12, -21, 34, 20, 44, 14, -2, 23, 15, 40, 45, -23, -25, 36, -9, 43, -32, 47, -27, -20, -5, -36, -34, 26, -43, 17, 29, 6, 38, -22, -39, 10, 19, 28, -37, -3, -45, 42, 33, -50, 37, -31, -40, 1, -47, -15, -28, 30, 2, 21, -17, 4, -46, 11, 18, 48, 35 -46, -45, -27, 1, 47, 19, 41, -22, -8, 6, -31, 21, -9, 32, -24, 15, -7, -33, -39, -15, -11, 40, 26, -40, -44, -42, -49, 49, 10, 24, -35, -47, 11, -18, -26, -5, -4, 42, -12, 33, 0, -23, 45, 48, 44, -13, -16, 43, 35, 46, 25, -36, 22, -50, -43, -28, 20, 13, -48, 4, -10, -17, 30, 38, 16, -25, 37, 2, 29, 27, 12, 14, 5, 17, -21, 31, -30, 39, -3, -2, 7, 18, -14, 3, -20, 34, -34, -38, -29, 36, 8, 28, -37, 9, -1, 50, 23, -41, -6, -32 47, 2, -4, -42, -29, -20, 4, -14, 29, 20, -21, 30, 32, 45, -19, -16, 35, 12, 1, 33, -47, 46, 16, 7, 3, 9, -34, 22, 43, -41, 6, 27, -8, -17, -37, 21, -35, -23, -9, -43, 26, -26, -5, -6, -48, 13, -46, 5, 39, 50, 11, 36, 41, 23, 25, 34, -24, 17, -39, 42, 14, -33, -27, -40, 15, 19, -15, -2, -13, -3, 48, -30, 24, -38, 0, 10, -12, 18, -1, -22, -36, -45, 38, -28, -44, 37, -11, 31, -31, 8, 44, 40, 49, -50, -7, -32, -25, 28, -18, -10 36, -13, -24, 28, -14, 1, -23, 40, -34, -31, -47, 25, 17, 8, 41, 12, -36, 24, -33, 46, 31, 15, 30, 29, -37, 49, -1, -26, -20, -43, -10, -3, 9, 43, -9, -38, -25, -44, 45, 14, -2, 27, 34, 11, -15, -41, 5, 32, -32, 19, -11, 47, 10, 39, -50, -49, 38, 48, 20, -39, -45, 22, -30, 42, 13, -6, 37, 4, -40, -19, 18, -21, 21, 6, -7, -17, -29, 3, -5, -18, -28, -22, 50, -46, 33, 44, 7, 23, 26, -42, -35, -48, -12, 35, -8, 2, -27, -4, 16, 0 -47, -1, 38, 18, -23, 47, 10, -15, 20, -46, 46, -7, -13, 34, 3, -12, -42, 4, 27, -28, -32, -38, -5, 7, -20, -26, -16, 49, -49, 39, 13, 16, 19, -10, 12, -40, 17, 48, 43, -29, 1, -41, -39, 25, -30, 37, 36, -17, 22, 33, 44, 26, -45, 42, 5, 45, -34, 6, -50, -3, 40, 32, 30, 35, -35, -21, 8, -8, 23, -37, 2, -22, -9, -14, -4, -48, -43, 29, -11, -44, -33, 21, -36, 28, -25, -27, 9, 14, 50, -19, -2, 0, 24, -31, -18, -24, 11, 41, -6, 15 15, 8, -23, 5, -46, -8, 39, -10, 38, -38, -41, 41, -15, 24, 40, -18, 3, 29, -16, -25, 45, -50, -32, -1, -37, -22, -7, 34, -44, 47, -40, -42, 32, -29, 2, 18, 23, 43, -12, -34, 16, -39, 12, 48, -17, 50, 11, 9, 6, -31, 35, -2, 20, -9, -21, -27, 37, 25, -47, -35, 46, -13, -30, -48, 19, -33, 1, -11, 17, -24, -19, 36, 28, 4, -5, -4, -43, -28, 21, 26, -3, -49, 44, -26, 0, 49, 22, -14, -45, -6, 10, 31, 42, 13, 27, 33, 14, 7, -36, 30 29, 10, 12, -40, -7, 16, -5, -8, 41, -37, -11, -30, 24, 0, 13, 6, 23, 36, 19, 11, -49, 2, 8, 46, 28, -22, -17, -9, 26, 5, -36, -25, -42, -41, 30, 39, -44, -21, -12, -34, 37, -50, 18, -20, -39, -2, -31, -10, 21, -43, 20, 17, 35, 3, -45, 42, 50, -48, -29, 33, 31, -24, 40, 34, 49, 7, -28, -1, 9, -3, 1, -47, -19, -4, -13, -27, 22, -26, -46, 44, -35, 15, 45, -33, 38, -14, -38, 48, -16, 4, 32, 27, -18, -6, -15, 47, 43, -32, -23, 14 32, 7, 28, 34, 31, 27, 35, -33, -45, -3, -16, 44, -12, 3, -40, -2, 36, -10, -38, -25, 15, 14, 12, 4, -20, -48, 1, -37, -28, 49, 10, -30, -35, -21, -31, -27, -39, -6, -29, 9, 20, 30, 25, 22, 5, -49, 8, 21, 19, -43, -18, -22, 50, -47, 17, 41, 38, -24, 33, -17, 39, 13, -13, -11, -34, 37, -9, 11, 16, 29, -46, -42, 6, -41, 47, 2, 46, -44, -15, -23, -19, 40, 43, 18, -50, 23, -26, -32, 0, 45, -7, 26, -1, -8, 42, -14, 48, -5, 24, -36 -18, 18, 21, 44, -45, 1, -31, -11, -47, -5, 28, -17, -10, -16, 32, 34, -4, 12, 39, 9, -48, -32, -41, 45, 24, -22, 14, -7, 42, 20, -39, -27, -9, 19, 38, 25, 23, 46, 43, -29, -33, -14, 13, -34, 4, -12, 26, -23, 49, -8, 5, 30, -42, 10, 6, -30, -6, -25, 3, 17, -36, -38, 40, -20, -13, 29, 0, -50, -1, -46, 48, -21, -44, 8, 22, -15, 27, -26, -35, 11, -2, -40, 2, 36, 33, -28, 35, -24, 50, 37, 7, -37, -49, -43, -19, 15, 41, 16, 47, -3 -23, 43, -8, -3, 23, 41, 26, 19, 14, 34, 6, 4, 2, 50, 7, 10, 46, -21, 9, 29, -6, 21, 12, -24, -17, -22, -46, -32, -34, -35, -11, -19, -28, -1, 48, 28, 27, 3, 20, -42, -2, -25, -45, 30, -47, 13, -18, -30, 37, 5, -26, 36, -33, 32, -7, 24, -50, 22, 25, -39, -27, 42, 31, -9, -13, -5, 18, 39, -20, -14, 8, 11, 45, 35, -16, -37, 16, 40, -12, 38, -40, 49, -38, -41, 47, 44, 33, -44, -10, -4, -15, 15, 17, -48, -49, -29, 1, -31, -43, -36"; var inputParser = new StringInputParser(columnDelimiter: ","); var inputCostGrid = inputParser.Parse(inputStr); var stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); var actualPath = _target.GetLowestTraversalPath(inputCostGrid); stopwatch.Stop(); Assert.True(stopwatch.Elapsed < TimeSpan.FromSeconds(1)); }