Help with Debugging Stage #NY8

I’m stuck on Stage #NY8.
I am trying to implement ?, the zero or one quantifier. Here is the relevant snippet of my code.

else if (pattern[i]=='?'){
            if (i != 0) {
                //Check if the optional character matches the current character
                input_index--;
                if (input_index < input_line.length() && ((input_line[input_index] == pattern[i - 1]))) {
                    // If the optional character is present, move the index forward
                    std::cout << "input_line " << input_line[input_index] << "\n";
                    std::cout << "pattern " << pattern[i-1] << "\n";
                    input_index++;
                }else{
                    i++;
                }
                match = true;
            }
        } else {
            std::cout << "input_line " << input_line[input_index] << "\n";
            std::cout << "pattern " << pattern[i] << "\n";   
            match = match_char(input_line, input_index, pattern[i]); 
            std::cout << "match" << match << "\n";        
        }

I’ve added the couts to debug. It passes the first test. The logs for that test are as follows:

remote: [tester::#NY8] $ echo -n "cat" | ./your_program.sh -E "ca?t"
remote: [your_program] input_line c
remote: [your_program] pattern c
remote: [your_program] match1
remote: [your_program] input_line a
remote: [your_program] pattern a
remote: [your_program] match1
remote: [your_program] input_line a
remote: [your_program] pattern a
remote: [your_program] input_line t
remote: [your_program] pattern t
remote: [your_program] match1
remote: [tester::#NY8] ✓ Received exit code 0.

Note that match 1 means that there was a match and match 0 means that there wasn’t.
Now for the next test, this fails and I am having trouble figuring out why. The logs for that test are as follows:

remote: [tester::#NY8] $ echo -n "dog" | ./your_program.sh -E "ca?t"
remote: [your_program] input_line d
remote: [your_program] pattern c
remote: [your_program] match0
remote: [your_program] input_line o
remote: [your_program] pattern a
remote: [your_program] match0
remote: [tester::#NY8] expected exit code 1, got 0
remote: [tester::#NY8] Test failed

If anyone has any idea of what I am doing wrong or can offer some guidance, I would really appreciate it. I’ve been stuck on this stage for a few days now. I’d be happy to share any more of my code if it helps.

Thanks!

Hi there, Are you still having trouble with this? If so are you able to provide more detail or code? For example, I’m curious why the program doesn’t start testing the input_line o against pattern c after it fails to match input_line d with pattern c (and is instead proceeding to match as if the first character of the input matched the first character of the pattern).

Closing this thread due to inactivity. If you still need assistance, feel free to reopen or start a new discussion!

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.