1. What’s uDebug?
2. What does “accepted” mean?
3. How do I use the site?
4. What kind of problems are on here?
5. Can I contribute?
6. What's “Good Karma”?
7. How do I get "Good Karma"?
8. How do I contact Team uDebug?
9. How do I get access to the API?
The Short Version
In a nutshell, on uDebug you can select a problem you’ve coded up a solution for, provide your input, and get the accepted output.
The Long Version
With the increase in popularity of technology, programming competitions in which individuals or teams of students from various universities across the world contest is on the rise as well. During such competitions, participants are given problems to solve within a certain time. They must submit their solutions in a popular programming language. These programs are then run on test data (the input to the program) and the participants are notified of their program result. If their solution is correct, that is, the output generated by the team’s program matches up to output on file at the competition, then they have successfully solved a problem. Otherwise, they need to code it up again. Note that participants are not notified of what exactly is wrong with their solutions. They are, rather, given a general indication. Often times, after a contest is over, the problems that were part of the programming competition are archived on sites like UVa Online Judge, ACM-ICPC Live Archive, Light Online Judge, or Google Code Jam, or Facebook Hacker Cup.
On uDebug, you can select a problem you’ve coded up a solution for, provide your input (test data), and get the “accepted” output (see next section for more details on the meaning of “accepted”). You can then check to see if this output matches up with the output of your own program. If it does, great! Otherwise, this is an indication that something in your program needs to be fixed. Note that we provide the “accepted” output to a given input – which is not what happens in an actual programming contest. By providing this additional information (the “accepted” output), we hope that you will be pushed to think of test cases your program could fail on and therefore become a better coder.
We prefer using the term “accepted” over “correct” because all solutions on uDebug have been tested on online judges and have passed their test cases. However, we don’t know if these test cases are stringent enough to label the program we have as “correct”. All we can safely say is that the programs on uDebug have been “accepted” by these online judges. That being said, we do strive to have both “accepted” and “correct” programs. So, if you suspect a solution we have is "wrong", even though it's "accepted", please reach out to us so we can investigate the matter.
Glad you asked! It’s quite straightforward, really. Let’s take an example.
First, we need to choose a problem to solve. This can be done by browsing the available problems on a site like UVa Online Judge, ACM-ICPC Live Archive, Light Online Judge, or Google Code Jam, or Facebook Hacker Cup.
Once we’ve selected a problem and understood it, we can then look for that problem on uDebug. Say we chose the following problem from UVa Online Judge: 11223 – O: Dah, Dah, Dah! In short, the problem asks us to write a program to decode Morse Code.
Assuming we’ve written a program that decodes Morse Code, it’s possible to test this on uDebug. First we look for the problem on uDebug. We notice that it’s available at the following location. Then, we either select available input from the “Select Input” table or else enter valid Morse Code as defined in the problem statement in the input field and hit the “Get Accepted Output” button. We observe that the accepted output is produced in the “Accepted Output” field. Now, we can compare this output to the output produced by our program by pasting our output in the “Your Output field” and hitting the “Compare Outputs” button. If it matches, great. But it would be wise to do some more testing before we submit our program for judging.
To help with testing, we provide a table with user-contributed input that can be selected. The input can also be voted up or down on.
Note that not all problems have all types of input available. If a problem doesn't have input, please consider contributing input.
Currently we have problems from UVa Online Judge, ACM-ICPC Live Archive, URI Online Judge, Light Online Judge, Dev Skill, Toph, CATS Online Judge, Google Code Jam, and Facebook Hacker Cup. We are constantly looking to expand our repository.
5. Can I contribute?
Yes! Of course! uDebug is proud to be community-powered! Indeed, most of the solutions and test inputs on uDebug have been contributed by our users. We are both grateful and proud of their support.
uDebug has thousands of solutions to problems – and we’d like to continue to expand our repository. We know that this will go faster with your help. To see if you have solutions to contribute for problems that are not on uDebug for UVa Online Judge, please click here. Special thanks to fire_bot for developing this amazing tool!
We promise to give due credit for your solution by displaying a moniker of your choosing on the corresponding problem page.
We’d also value any test input you find useful during testing / debugging a problem. Here also we’ll display a nickname you pick on the corresponding problem page.
To provide us with test input or your solution please send e-mail. Thank you.
6. What's “Good Karma”?
There exists “good karma” associated with each profile. This is a measure to quantify the contribution of a user and is calculated using a combination of the following factors
(a) Solution (10 good karma)
(b) Input (7 good karma)
(c) Hints (5 good karma)
(d) Votes (1 good karma)
(e) Helpfulness (1 good karma)
Note that it's possible to vote a user as helpful by visiting their profile page.
Initially users on uDebug have zero good karma. This is by design. However, no matter; it's easily possible to get good karma! We hope that you'll enjoy making this effort to gain good karma.
The most straightforward way to get good karma is to vote on input you find useful. Once you reach 20 good karma, you will have enough to start contributing input. With 100 good karma you're elligible to add hints and at 200 good karma you have enough to flag a problem, faulty input or hint. Note that you can reach out to us using one of the mediums given below if you have a solution, input or hint you'd like to contribute and we'll add it in for you and give you the required good karma. Come join the hundreds of users who are actively contributing to make uDebug a resource-filled community!