Welcome to the first programming challenge! Three of these will be posted a week and you can complete it in any language you want.

You get a point for completing an easy challenge, 2 for a medium, and 3 for a hard. For each challenge if you solve it in the least amount of characters you get a bonus point, and if your code runs the fastest when I check it you also get a bonus point. (ties mean everyone who tied gets the bonus point although exact duplicate answers wont count)

Ill be posting a leaderboard that will show the people who have the most points every month

Submissions will be open for a week


As a new hire of bracket inc., you have been tasked with getting rid of excess brackets lying around the facility. You must simplify a series of brackets so that only brackets that dont have a match remain (a match is an opening and closing bracket of the same type beside each other). The final result should have no matches

As an example for the input [(({})({)(()}] the expected output would be [(({)(}]

These are the valid types of brackets: (){}[]

Your system will be tested against 10 different unknown test cases before it is unleashed on the facility. In order to complete this task you must pass all of the test cases.

Any programming language may be used and to submit an answer reply on this post with the code and the language you coded it in

Edit: Clarification, you must take input in from the user using the program instead of them being hardcoded. (makes it easier to test)

  • DrillingStricken@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 year ago

    Late to the game but I’d love to hear some feedbacks as I’m still a beginner.

    Language: C

    Warning: There is a problem when executing in Git that said >bash: syntax error near unexpected token ‘(’ if you have parentheses in the input. But it works normally in other terminals. And somehow Lemmy always remove the header file in my comment. So after the first “include” is “stdio.h”, and the second is “string.h”. And they are inside “<>”.

    #include #include

    void CharShifter(char* string, int LengthOfString, int IdxOfOpenChar);
    
    int main(int argc, char* agrv[])
    {
        if (argc != 2)
        {
            printf("Usage: matching your_string\n");
            return 1;
        }
    
        char* string = agrv[1];
    
        int LengthOfString = strlen(string);
        int NumberOfTurn = 0;
        int FoundAMatch = 0;
    
        while (NumberOfTurn &lt;= FoundAMatch)
        {
            for (int i = 0; i &lt; LengthOfString - 1; i++)
            {
                if (string[i] == '[')
                {
                    if (string[i+1] == ']')
                    {
                        LengthOfString = LengthOfString - 2;
                        
                        CharShifter(string, LengthOfString, i);
                        FoundAMatch++;
                    }
                }
                else if (string[i] == '(')
                {
                    if (string[i + 1] == ')')
                    {
                        LengthOfString = LengthOfString - 2;
    
                        CharShifter(string, LengthOfString, i);
                        FoundAMatch++;
                    }
                }
                else if (string[i] == '{')
                {
                    if (string[i+1] == '}')
                    {
                        LengthOfString = LengthOfString - 2;
    
                        CharShifter(string, LengthOfString, i);
                        FoundAMatch++;
                    }
                }
            }
            NumberOfTurn++;
        }
    
        for (int i = 0; i &lt; LengthOfString; i++)
        {
            printf("%c", string[i]);
        }
        printf("\n");
        return 0;
    }
    
    void CharShifter(char* string, int LengthOfString, int IdxOfOpenChar)
    {
        int NumberOfShiftedChar = LengthOfString - IdxOfOpenChar;
        int TwoAwayFromChar = IdxOfOpenChar + 2;
    
        for (int j = 0; j &lt; NumberOfShiftedChar; j++)
        {
            if (string[TwoAwayFromChar + j] == '(' || string[TwoAwayFromChar + j] == ')'
            || string[TwoAwayFromChar + j] == '[' || string[TwoAwayFromChar + j] == ']'
            || string[TwoAwayFromChar + j] == '{' || string[TwoAwayFromChar + j] == '}')
            {
                string[IdxOfOpenChar + j] = string[TwoAwayFromChar + j];
            }
        }
        return;
    }
    
    • metiulekm@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      I thought I knew how to resolve the &lt; and > thing, but it didn’t work at all. I guess the sanitizing code is a bit overzealous after the recent vulnerability.

      Anyway, your code will look slightly nicer, at least on the web interface, if you surround it with three backticks, like this

      ```c
      void CharShifter(char* string, int LengthOfString, int IdxOfOpenChar);
      ```
      
      • DrillingStricken@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        1 year ago

        Thank you!! It indeed looks nicer than before when wrapped around ```, but something still stays the same.

        The &lt; is the less than sign. But I don’t think I use greater than sign in my loops, what line do you get that problem? And if you can execute the code, let me know your thoughts. I’m learning, so it will be really helpful. Thanks!!