Today I want to share with the public my little project (which was part of my thesis), service on the "defrost" the results of the competition format ACM ICPC — "System for Right Solutions Standings Dancing" (S4RiS StanD). Hosted on github.
In 2011, my team is still held in the semifinals, where at the close I saw the live operation of such a system ITMO. The feeling was strong. But after analyzing the work and reviewing captured my video, I realized that it is possible to improve this implementation, make it open to and more modest, local competitions, the participants were able to watch in awe tabulation of results. It was chosen as part of my thesis was used already in one competition and received a logical extension.
About the service and its features
Service is just a web page with a core written in JS and requires no "server" scripts. Therefore, this service can be used without problems locally.
How does S4RiS StanD
To use the service needs a log of contest, providing all necessary information. The structure of the log — this is the correct JSON code, designed for maximum ease of writing programs converters of the log of the real test systems to log S4RiS StanD JSON Log.
After loading the log is "scrolling windows" of the results to the last place. "Unfreezing" of the results is iteratively. Each step is initiated by pressing the 'N' on the keyboard, with the active window to the page in the browser service.
Defrosting occurs by the following rules
- In the current line (which is highlighting by color), which is associated with the specified contestant searched alphabetically first problem, which was trying attempts during freezing (in a cell given the problem is an expression "? N", where N — the number of submission to the problem during all contest time).
- If such a problem was found, the cell it starts "flashing" and display the result on this problem will be done in the next step defrosting.
- If the attempt is successful — the line with the contestant takes a new position with the currently known results of other contestant on the rules of ACM ICPC.
- If frosen problems participant is left — we go to the line above.
As you know, the competition organizers are always some "lower" limit of places, from which they issue certificates and cookies to participants. Standard defrost (which initiated by pressing 'N') can get very slow, for example, up to 40 place if we have 100 contestants and in the freezing was not a lot of successful submission.
The idea of "auto-defrost" is quite obvious and can be claimed, but the normal control of all animations for a defrost is problematic (and it was clearly seen in the semi-finals NEERC 2011 when the screen is not clear what was going on.) So I decided to try to find the "sweet spot" and offer you the following mechanism of "unfreezing".
Mode "accelerated defrost"
By "active key" 'N' (Next) added key 'F' (Fast), when pressed, the following actions occur — we are go through the current line of contestant and defrosting all submission until the contestant receives the AC for some a problem or all tasks already defrosted. No long flash animations.
Testing has shown that these two modes is quite possible to combine and the speed and defrosting improved very well.
Just in the last version was sold a kind of adaptive layout — depending on the size of the browser window and specify the number of contestant simultaneously displayed, service tries to maximize space occupied browser. This was done to eliminate the need zoom-in browser when using the projector. The color scheme also specifically chosen such that in a bright room information on the projector was better visible.
Proper operation of the service tested in browsers Mozilla 9.x and above, Opera 11.x and above, Chrome 17.x (if there are strange artifacts in zoom-in page) and above.
During testing, the log Moscow Quaterfinal 2011 (about 120 teams, 1800 submission), it was found that the service was a good pull-up job for the browser.
The best results have shown Opera 12.x, Chrome 22.x.
Where to look at the work and where to download.
Demonstration of the first version of the service by the example of "unfreezing" of the results Intercollegiate XV Olympiad, held March 24-25, 2012 in Vologda, you can look at youtube
Temporary demonstration stand is located at http://students.uni-vologda.ac.ru/pages/pm07/ost/stand/S4RiS StanD.html. To demonstrate propose to use 2-logs formats — Ejudge (Moscow Quaterfinal 2011) and "native" log of the system — S4RiS StanD JSON (Intercollegiate Competition Vologda 2011)
Tips to use
- To demonstrate the defrost, sure to check that the system produces ultimately the same results as your testing system.
- It is not advisable to defrost the table too quickly — it is fraught with the advent of stocks in the animations. Calmly wait until all the updates on the page after the next key press.
- During the "rapid unfreezing" include what some upbeat music to increase the stress of others.
- To increase the active area of the screen, enable "full screen" in the browser.
- The more entries in the event log — the greater the load on the browser and its JS engine. On slower machines and the latest versions of browsers may drop the speed and smoothness.
This version of the service is almost all of my and other people's imagination in this area, but I am willing to listen to new proposals, if this development will be in demand.
This software is licensed under the Creative Commons Attribution Non-Commercial Share Alike and the author is not liable for any service crashes.
If anyone has a desire to offer an alternative color scheme, then advise as to optimize the kernel — I'm happy to accept your suggestions.
UPD: The new release includes localization. Service now detects a browser language (which can be accurately set to Opera and Chrome) and gives the text translated into the language. Implemented until a translation in English and Russian.
PS: Many thanks to Maxim daftcoder Delyukin for their guidance and support to the project. Sorry for my poor english.