Ad
  • Custom User Avatar

    OP solved the task, closing

  • Default User Avatar

    You are thinking as of [row][column] and the solution is [column][row]

  • Custom User Avatar

    For this kata, coordinates in the maze are 0-based. First coordinate is horizontal (x), increasing left to right, and the second one is vertical (y) increasing from top to bottom.
    Such coordinate system is somewhat "customary" and I believe that's why it's not explained in details, but I've seen remarks in the comments that it's not sufficiently clarified in the description.

  • Default User Avatar

    I am still confused, here is how i look to this:

    Example 1:
         1 ##############      1 ############## 
         2 #        \   #      2 +--------\   # (2, 0)? or (1,0) if starts with 0
         3 *   \        #  =>  3 *---\    |   #
         4 #            #      4 #   |    |   #
         5 #   \    /   #      5 #   \----/   #
         6 ##############      6 ##############
           12345678901234 = 14 
    Example 2:
          1###*###      ###*### 
          2#/ /  #      #/-/  # 
          3#     #  =>  #|    #
          4#     #      #|    #
          5#\    #      #\----+ (5,7) or (4,6) if starts with 0
          6#######      #######
           1234567 = 7
    

    Am I misunderstanding something here?

  • Custom User Avatar

    You have to be careful when reading the mazes, because in C++, backslashes are escaped what makes them tricky to read. Without escaped characters, mazes look like this:

    Example 1:
          ##############       ##############
          #        \   #       +--------\   #
          *   \        #  =>   *---\    |   #
          #            #       #   |    |   #
          #   \    /   #       #   \----/   #
          ##############       ##############
    
    Example 2:
          ###*###      ###*### 
          #/ /  #      #/-/  #
          #     #  =>  #|    #
          #     #      #|    #
          #\    #      #\----+
          #######      #######
    

    I marked places where beam exits the maze with +, and they are located at (0,1) for the first maze, and (6,4) for the second maze.

  • Default User Avatar

    How first answer of is equal to (0,1)? Isn't it (1,0)?

    Describe(exit_from_maze_tests) {
      It (passes_example) {
        Board m {
          "##############",
          "#        \\   #",
          "*   \\        #",
          "#            #",
          "#   \\    /   #",
          "##############"
        };
        Assert::That(exit_from_maze(m), Equals(Result({0, 1}, 22)));
      }
    

    The same second example: it should end on (5, 7)! how it is (6,4)?

     It (passes_second_tests) {
        Board m {
          "###*###",
          "#/ /  #",
          "#     #",
          "#     #",
          "#\\    #",
          "#######",
        };
        Assert::That(exit_from_maze(m), Equals(Result({6, 4}, 10)));
      }
    };
    

    I am totally confused, with how answers have gotten? Can you explain me, please!

  • Custom User Avatar

    To start with, remove the line

    len -= 3;
    

    Also, I recommend you convert the C-style string to a C++ string.

    string in_string(in); 
    

    This might help refactor the code and simplify it further.

  • Custom User Avatar

    Read this, try Github channels if you're in a hurry.

  • Default User Avatar

    If there is no help, where i can find some hints?

  • Default User Avatar

    This comment is hidden because it contains spoiler information about the solution

  • Default User Avatar

    This comment is hidden because it contains spoiler information about the solution

  • Default User Avatar

    Checked the code, answers is correct, however output says:

    Expected: equal to another value

    Actual: some value

    Havent' seen that type of question in the comments bellow.

  • Default User Avatar

    Thank you very much for quick and comprehensive reply. I do appreciate that!

  • Custom User Avatar

    Thanks for sharing. It's interesting to me cuz I never had that error.

    By some quick debugging I found the problem: your for loop initializes unsigned int until it goes negative. But here's the problem with unsigned - it doesn't go negative :P Once you try to do 0 - 1, it results in 4294967295, which is still >= 0, and when you try to access a character at that index, you get this error.

    I hope that's helpful. There are still some logical errors in your code, but this should get you started :>

  • Default User Avatar

    This comment is hidden because it contains spoiler information about the solution

  • Loading more items...