OSt's blog

By OSt, 11 years ago, translation, In English

Good afternoon.

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.

Supported browsers

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.

  • Vote: I like it
  • +133
  • Vote: I do not like it

| Write comment?
11 years ago, # |
  Vote: I like it +9 Vote: I do not like it

It would be a good idea host this project in Git also, in my opinion it make things easy to distribute and other people to help in the project. Some options are Github or Bitbucket

11 years ago, # |
  Vote: I like it +8 Vote: I do not like it

Well done!

11 years ago, # |
  Vote: I like it +5 Vote: I do not like it

can someone help me ?? Actualy when ever i am opening a contest and trying to click on submit tab ,it says oops!something is broken .First i thought it was temporary ,but its happening for the last 2 days.

11 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

I've also wrote a live board solution project.

see http://winguse.com/blog/2012/10/20/nenuliveboard/

I am the one of the technical leader of ACM-ICPC Asia Regional, Changchun Site. And this project was well displaying the live time scoreboard during the contest in our gymnasium.

Demon see http://acm.nenu.edu.cn:8080/BoardWeb/

I hope my project will be helpful during the ACM contest world wide.

  • »
    11 years ago, # ^ |
    Rev. 4   Vote: I like it 0 Vote: I do not like it

    Your application can work with any back-end system other than the one with which it is working now? I think that one of the main requirements of these systems is the simplicity of their interaction with variety back-end systems. We have no common specifications for every judge systems what kind of information we can get from it and it can be very hard to modify back-end, that it could work with such application. How difficult is it to get another system to work with your application? PS: Give more info about principles of interaction your application with back-end.

    • »
      11 years ago, # ^ |
      Rev. 5   Vote: I like it 0 Vote: I do not like it

      My project is designed during the Changchun Regional Contest, which using the PC^2 to be the judging system.

      I wrote a PC^2 scoreboard API to get the status from the judge system and insert them in to the database for caching.

      The database may be the interface between my scoreboard and any other back end system. The database only contain the information of Teams, Problems and Status. All the ranking information is computed on the browser site by using JavaScript. So, at this point, my project is also fitting in other judge system. Having a look of this file, by looking at the database structure of my project you will be more clearly.

      But however, due to time and other reason, I haven't written any documents in English, but only in Chinese, sorry for that.