Why?
- You have to read the text of the problem inside the arena
- You have to manually create the class and copy the method signature
- Testing the code with the examples is a manual process in the arena
- Debugging against the examples force you to code all the examples manually
- You have to copy the code from Visual Studio into the Coding Area
This is tremendously annoying!
Fortunately, there is a solution to these problems using some arena plugins. It is a little bit annoying to setup but once done your coding experience is vastly improved and you can finally focus on writing algorithms.
You can find some only-text documentation at the following link:
http://www.topcoder.com/contest/classes/ExampleBuilder/ExampleBuilder.html
First of all, download the TopCoder.zip file and extract it into C:\TopCoder
The folder contains an empty Visual Studio .NET 4.5 C# console application and a folder jars with the plugin code.
In this post, I want to explain step by step how to configure the TopCoder arena to be able to start solving SRM problems in TopCoder using C# and Visual Studio.
Launch the arena and open the Editor options.
Add a new editor with the following information:
- Name: ExampleBuilder
- EntryPoint: codeprocessor.EntryPoint
- ClassPath: C:\TopCoder\jars\CodeProcessor.jar;C:\TopCoder\jars\FileEdit.jar; C:\TopCoder\jars\ExampleBuilder.jar
Select the new editor and click Configure.
Insert the entry point fileedit.EntryPoint and the processor class tc_plugin.ExampleBuilder
Then, click Verify.
Press OK and then Click Configure.
Specify the enter directory to C:\TopCoder, check "Write the problem description using HTML" and check "Write the Problem Description to separate file" with extension html.
Click the Code Template tab, select the C# language.
Copy the template code from here but feel free to customize it as you like.
Save everything.
Now you have everything set up and you are ready to code.
Open one of the past SRM: Practise Rooms > SRMs.
Select one of the problem.
The default editor will launch by default. Make sure that you select C# as your language.
Change your editor to ExampleBuilder.
This will trigger the creation of two files:
You can open the html file and read the problem statement in your favourite browser (maybe in a separate screen if you have a multi-monitor setup).
At this point, you can open the TopCoder Visual Studio solution and include the file in the project.
You can see that all the examples has been automatically added as tests and the only thing that you need to do is to provide the implementation of the algorithm in the method.
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class BinaryCode
{
public string[] decode(string message)
{
// IMPLEMENTATION GOES HERE
string[] res = new string[0];
return res;
}
// BEGIN CUT HERE
public static void Main(String[] args)
{
try
{
eq(0,(new BinaryCode()).decode("123210122"),new string[] { "011100011", "NONE" });
eq(1,(new BinaryCode()).decode("11"),new string[] { "01", "10" });
eq(2,(new BinaryCode()).decode("22111"),new string[] { "NONE", "11001" });
eq(3,(new BinaryCode()).decode("123210120"),new string[] { "NONE", "NONE" });
eq(4,(new BinaryCode()).decode("3"),new string[] { "NONE", "NONE" });
eq(5,(new BinaryCode()).decode("12221112222221112221111111112221111"),
new string[] { "01101001101101001101001001001101001",
"10110010110110010110010010010110010" });
}
catch(Exception exx)
{
Console.WriteLine(exx);
Console.WriteLine(exx.StackTrace);
}
Console.ReadKey();
}
...
// END CUT HERE
}
You can see the results of the tests simply running the project with F5.
How do you actually submit your code?
Click Compile and the source code will be automatically copied into the arena.
Finally click Submit.
To summarize, once you setup your development machine like I explained in this post you will be able to open any TopCoder problem, start coding your algorithm immediately and have a lot of fun. During a competition, this technique can also save you a lot of time and increase the chance of getting an higher score.
Andrea
Now you have everything set up and you are ready to code.
Open one of the past SRM: Practise Rooms > SRMs.
Select one of the problem.
The default editor will launch by default. Make sure that you select C# as your language.
Change your editor to ExampleBuilder.
This will trigger the creation of two files:
- A C# source file with the problem and the tests
- An html file with the description of the problem
You can open the html file and read the problem statement in your favourite browser (maybe in a separate screen if you have a multi-monitor setup).
At this point, you can open the TopCoder Visual Studio solution and include the file in the project.
You can see that all the examples has been automatically added as tests and the only thing that you need to do is to provide the implementation of the algorithm in the method.
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class BinaryCode
{
public string[] decode(string message)
{
// IMPLEMENTATION GOES HERE
string[] res = new string[0];
return res;
}
// BEGIN CUT HERE
public static void Main(String[] args)
{
try
{
eq(0,(new BinaryCode()).decode("123210122"),new string[] { "011100011", "NONE" });
eq(1,(new BinaryCode()).decode("11"),new string[] { "01", "10" });
eq(2,(new BinaryCode()).decode("22111"),new string[] { "NONE", "11001" });
eq(3,(new BinaryCode()).decode("123210120"),new string[] { "NONE", "NONE" });
eq(4,(new BinaryCode()).decode("3"),new string[] { "NONE", "NONE" });
eq(5,(new BinaryCode()).decode("12221112222221112221111111112221111"),
new string[] { "01101001101101001101001001001101001",
"10110010110110010110010010010110010" });
}
catch(Exception exx)
{
Console.WriteLine(exx);
Console.WriteLine(exx.StackTrace);
}
Console.ReadKey();
}
...
// END CUT HERE
}
How do you actually submit your code?
Click Compile and the source code will be automatically copied into the arena.
Finally click Submit.
To summarize, once you setup your development machine like I explained in this post you will be able to open any TopCoder problem, start coding your algorithm immediately and have a lot of fun. During a competition, this technique can also save you a lot of time and increase the chance of getting an higher score.
Enjoy coding!
Thank you very much! Great article. Simple and working!
ReplyDeleteThanks a lot, you saved me a lot of time!
ReplyDeleteYou are welcome! See you in the arena :)
ReplyDeleteVery cool, it's nice to have intellisense and not have to worry about typos or have to lookup library calls, and debugging is easier too. Exactly what i was hoping to find, thanks!
ReplyDeleteNote: If you're getting an error when verifying mind the dot at the end of tc_plugin.ExampleBuilder. I was copy/pasting and didn't notice the dot :P
Thank you for your suggesting. I removed the dot.
Delete