CompoundGraphDrawing Visualization
To aid in the development of your submission, we are providing a visualization
tool to competitors.
The tool is packaged as an executable jar, which can be run either by
double clicking it (in windows anyway) or from the command line as "java -jar
CGD.jar".
As in previous contests, to use this visualization tool, you should create an application
that communicates with the tool via standard in and standard out. Note that
this does not effect the way your program should work when you submit it on
the TopCoder website.
The program that you write for the visualizer should start by reading the parameters, N, M, C, L, S, and P from
standard in, all given on one line. You should then read N lines, where line i
describes node i in the format "PARENT MINWIDTH MINHEIGHT". You should then read
M lines describing M edges in the same format described in the problem
statement. You should then print N+M lines to standard out in the same format
as the elements of the string array you would return.
For instance, to use the visualizer, you might implement the following
pseudocode, and adapt your solution to use it:
main()
N = nextInt()
M = nextInt()
C = nextInt()
L = nextInt()
S = nextInt()
P = nextInt()
for(i = 0; i<N; i++){
parent[i] = nextInt()
width[i] = nextInt()
height[i] = nextInt()
}
nextLine() //make sure to finish consuming the last line describing the nodes
for(int i = 0; i<M; i++){
hyperedges[i] = sc.nextLine();
}
s = draw(parent,width,height,hyperedges,C,L,S,P);
for(int i = 0; i<N+M; i++)
println(s[i]);
flush();
Using the visualizer
To use the visualizer, you must have Java 1.5 or greater installed. To run
the visualizer, you can execute the command "java -jar CHD.jar". This will
open up a new window containing the visualization, along with a number of
controls. The first thing you will need to do is specify the executable you
have made for your drawing code. You may either enter its path, or select it
via the button provided. If your executable requires arguments, enter them
in the provided field. For example, if your executable is a Java class
CompoundGraphDrawing.class, you should enter something like "java
CompoundGraphDrawing" (without
the quotes) in this field (replacing "java" with the full path to the Java
executable if necessary). The exact details of what you enter here will
depend on your language choice. In particular, in Java, you will need to make
sure that the class file is in the same directory as CGD.jar, or else you
will need to specify a classpath along with the executable location and class
name.
To test the examples, you must specify a file containing tests. The file should
be formatted like the provided examples file, and the uncompressed tests.gz
file. The line parameter gives the line number into the file, and hence the
test number. For both files, 0-9 correspond to the examples of the same
number. For the tests.gz file, 10-10009 correspond to the remaining tests. The
seed field is used to seed the random number generator for the minimum
sizes and C, L, S and P parameters.
Finally, the slider on the left of the display controls the zoom, while clicking
and dragging move the image around.
Command Line Options
You can specify a number of parameters on the command line to
simplify the automation of testing (though you don't need to use any of them).
For example, "java -jar Polygon.jar -line 5" will set line to 5 when running the
tool.
-file <file> | Specify file |
-line <line> | Specify line |
-seed <seed> | Specify the initial seed |
-exec <command> | Specify the command to execute your code |
-novis | Run the test case without the visualizer (requires -exec, implies -go) |
-go | Start running immediately (requires -exec) |
-onewindow | Run with one window instead of 3 |
Final Notes
- Make sure you flush your buffers after writing to standard out, or the
visualization tool might not get your output, and it will appear to
hang.
-
Java users: if you get something java.lang.NoClassDefFoundError
CompoundGraphDrawing,
it means that you've correctly set the path to Java, but Java can't find
your class. Among other things, you can try setting the command to something
like "PATH1\java -cp PATH2 CompoundGraphDrawing", where PATH2 is the location of your
class file.
-
If the simulation fails to go, but there are no error messages, the most likely
explanation is that the visualization tool is still waiting for your program
to tell it what to do next. An obvious cause for this is that your program is
in some sort of an infinite loop. Another possible cause is that your program
is waiting for input which it will never get, as the visualization tool is
waiting for your program.
-
Please note that, while we will do our best to make the workings of the
visualizer as clear as possible, it
is impossible for us to help everyone debug their code to make it work with
the visualization tool. If you do think you have discovered a bug, please email
lbackstrom@topcoder.com or post the bug to the forums. The more details you
provide, the more likely you are to be helped quickly. Please to NOT post
code to the forums, as that is against the rules, and you will be disqualified.