RDM - 4 was special in every way , with a new team working on it making sure we brought together a set of interesting problems. Each problem was written in a way that the last problem’s solution could be used and the next problem’s solution can be built on top of it. The problem set was developed in a progression manner.
The submissions for each problem were reviewed automatically using automated testers. The submitters were given sample submissions and sample testers to get a feel of how the automatic review works and to ramp up faster with the needed Docker setup. They could extend the sample submissions with the required functionality but they also had freedom in choosing the frameworks/technologies for their submission.
For the Easy Problem, the task was to create a web page which reads the given CSV(Comma Separated Values) and displays it in tabular form grouped by Author Username. You can use any programming language that renders a page that matches the given constraints.
An example submission that passes all test cases:
Index.html: https://pastebin.com/wQFwXh8U
Script.js: https://pastebin.com/d9qu5tkP
For the Medium Problem, the task was to show the number of Bug Tickets listed by each Author Username irrespective of their Valid, Invalid or Duplicate Status. Author Username with highest number of Bug Tickets should be placed at number 1 position in the table, second highest at number 2 and so on.
An example submission that passes all test cases:
Index.html: https://pastebin.com/VWa0tZ8F
Script.js: https://pastebin.com/WvVSSecq
For the Hard Problem, the task was to parse the CSV file by keeping track of each Author Username Bug Tickets and their “Label” Field which contains 3 or 2 comma separated values i.e. an Integer between 1 to 5, Bug Priority Code P1 or P2 or P3 or P4 or P5 and “Valid” or “Invalid”. There is also another type of Challenge, where instead of the Bug Priority code (“P1” - “P5”), we have the Bug Type: “Functional” or “UI/UX”. Included in the sample submission and tester are two different Scoring Sheet files, which determine how many points to assign for each different type. Your solution will have to parse the Scoring sheet and assign points to the given Bug Ticket files based on the chosen type.
An example submission that passes all test cases:
Index.html: https://pastebin.com/jZYUKM1j
Script.js: https://pastebin.com/Zp22SrJ1
The final leaderboard for the match is below.
Part of the strategy for RDM matches is to take into account both submission time and test-case accuracy. Sometimes it is worthwhile to make a submission even though it will not pass all test cases, because you can still get points from a fast submission time. In this particular match, it paid off for [ksun48] - literally, even though he only had a full-accuracy solution to the Medium problem.
The fastest full solves on Easy and Medium problems were by [HeVy] - who also won an additional code quality award for clearly written code utilizing external libraries in a professional manner.
The only competitor to have full test-case accuracy on all problems, including Hard, was [webninjasi], who placed third and won additional prizes for his submissions as well.
See an example of the scoring curve in the case of the Hard (750-point) problem below.
For the automated tester to be able to score the solutions, it is important to follow exactly the Docker structure given in the sample submissions. See the challenge pages for the given sample submissions below.
Easy: https://www.topcoder.com/challenges/0d2fb97a-ffb6-4d15-9485-928df124bb78
Medium: https://www.topcoder.com/challenges/41323c8d-d0e8-48f6-a746-5aeb072a07cc
Hard: https://www.topcoder.com/challenges/d814e452-d25d-4a60-ad61-d557f107dfcb
In this particular challenge, we focused on a real-life use-case to help Topcoder Bug Hunt Copilots gain some understanding of Bug Hunt results data easily with the applications developed as part of the contest. In general, RDMs can have a variety of challenge topics, including particular technology stacks or languages. Be in touch with your suggestions, or become a problem writer yourself!
See you in the next match!