ecnerwala's blog

By ecnerwala, history, 5 years ago, In English

Congratulations to tourist for winning Grand Finals of Lockout 0 over Um_nik with a score of 800-300! The round had 5 problems, but with a special 1v1 twist: only the first person to solve each problem got points for it! After the first 10 minutes of the match, the 3 easiest problems were all solved and the contestants were tied at 300 points, so both contestants just needed to race to finish the 500 point problem first. With some impressive coding and frenzied debugging, tourist managed to eke out the win! The final scoreboard was:

Lockout 0 Grand Finals (Video)

tourist 800 — 300 Um_nik
1:51 (submission) 100 (ARC 068 D)
8:11 (submission) 200 (ARC 069 D)
300 (ARC 069 E) 5:00 (submission)
400 (ARC 068 E)
45:46 (submission) 500 (ARC 068 F)

Also congratulations to all contestants in the Lockout 0 tournament! The full bracket is at https://challonge.com/lockout0. The final standings are:

  1. tourist
  2. Um_nik
  3. hos.lyric
  4. Petr

On stream, we also ran two more 2v2 team-Lockout exhibition matches! These matches used 9 problems with distribution 100 — 100 — 100 — 200 — 200 — 200 — 300 — 300 — 400, so 1000 points were needed to win.

We got to see a few different strategies in these matches: some teams opted to solve several easy problems before moving onto the hard ones, while others just solved two easy problems before jumping right into the hardest 400 point problem. What did you think worked best?

Finally, thank you all for tuning into the stream! Our total viewership was over 3000 people! You can find the full VOD on YouTube at https://youtu.be/Dk-nWqwyE8g.

We'd love your feedback on this new contest experience! Do you think the 1v1 or 2v2 format is more exciting? How could we make the spectating experience better? Are you excited to play yourself? Please let us know in the comments!

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

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

Here are the complete scoreboards for the 2v2 matches:

Team Lockout Match 0 (Video)

tourist+Um_nik 400 — 1000 scott_wu+ecnerwala
8:22 (submission) 100 (ARC 070 C)
3:49 (submission) 100 (ARC 071 C)
100 (ARC 072 C) 4:07 (submission)
6:31 (submission) 200 (ARC 071 D)
200 (ARC 071 E)
200 (ARC 072 D) 3:24 (submission)
300 (ARC 070 D)
300 (ARC 072 E) 12:54 (submission)
400 (ARC 070 E) 12:49 (submission)

Team Lockout Match 1 (Video)

tourist+Um_nik 1200 — 400 neal+ecnerwala
100 (ARC 092 C) 6:54 (submission)
100 (ARC 093 C) 4:00 (submission)
1:18 (submission) 100 (ARC 096 C)
7:24 (submission) 200 (ARC 092 D)
3:55 (submission) 200 (ARC 093 D)
200 (ARC 096 D) 8:05 (submission)
19:44 (submission) 300 (ARC 092 E)
300 (ARC 093 E)
29:05 (submission) 400 (ARC 096 E)
»
5 years ago, # |
  Vote: I like it +58 Vote: I do not like it

I've enjoyed watching the stream, it was fun.

I think the key point that makes this format spectacular is the high pace and lots of action. Every second counts, and that's why I also liked Codefight's matches and marathons. From this point of view, maybe it's worth trying to decrease difficulty and increase the number of problems, or choose problems with longer implementation: it is not that interesting when contestants just have statements opened for 10 minutes and nothing happens. The possible drawback is that it can become less interesting to compete.

Also, I prefer 1v1 format, because it is easier to track two people's actions rather than four. You obviously can't stream all four screens at the same time, and it's also difficult to comment what is happening, so submissions appear out of nowhere. With only two screens, you can technically show both or make picture in picture and switch fast when something happens.

Btw, I guess you hadn't discussed rules in details before the stream, so tourist used his Mint template instead of typing a couple of functions. I think it also makes the competition less spectacular (some 250 lines appeared instantly), so my suggestion is to forbid using any prewritten code. This also may seem boring for contestants, but unfortunately you can't show what's going on in competitor's mind, you can only show how they code.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +20 Vote: I do not like it

    I am strongly against forbidding prewritten code, as you may guess :) I do not think it is fun to look at people implementing Dijkstra or modint

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +34 Vote: I do not like it

    As for the difficulty level, it seems we were supposed to finish the 500pt problem in 20 minutes but we didn't really match the expectations :) Personally I was rushing too much as I felt I was behind, but in the end the only way to untangle the problem was to relax, admit that my strategy of going for the first idea was bad, and just finish the job carefully.

    As for using prewritten code, I actually raised this point during one of the rounds we ran at the TCO when my suffix array template helped me quite a lot, and I think we agreed that prewritten code is fine. Here is one point for allowing it. Would you like the competitors to type their usual template for each problem from scratch, and if not, what would you allow to have: includes, defines, typedefs, sync_with_stdio(false), commented out freopens? It's not really obvious to me where to draw the line.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +47 Vote: I do not like it

    I'm personally against a rule banning prewritten code for three main reasons.

    First, it incentivizes a form of cheating that is very hard to prevent at scale. Sure, this rule could have been enforced in the matches streamed a few days back, but it sounds like the organizers are hoping to expand this in order to make this format available to everyone. If this does occur, then presumably, matches generally will not be monitored by humans, making it extremely easy to copy in prewritten code, should you wish to do so. Moreover, this would be extremely hard to detect because with access only to the submission logs, there's no way to distinguish between thinking of a solution quickly and then typing, say, a segment tree from memory and taking more time to think of the solution but making it up by copying/pasting the same segment tree.

    As a result, this policy would make the competition favor those willing to cheat, making it unfair to those abiding by the rules. I would imagine that this sort of cheating would be relatively common, especially because prewritten code is allowed in most programming contests, so many would just assume that it would be allowed here, too.

    Second, a ban on prewritten code would make this format test the wrong set of skills. I can think of two ways that such a ban might be implemented, and I'll discuss each of them individually.

    (a). Contestants might be able to reference prewritten code and type it up, but not to copy it in. This has two problems. First, it drastically increases the role typing speed would play in the competition, and second, it would actually further increase the need for thoughtful prewritten code because competitors with more concise library code would be at a substantial advantage. It is generally accepted that neither of these are skills we want to test on programming contests.

    (b). Contestants would be banned from accessing all prewritten code. The aforementioned typing speed problem still exists here, but now, rather than testing conciseness of library code, the format would test memorization of algorithms. Obviously, this isn't a big problem for very basic things like modular arithmetic or Dijkstra's algorithm (and as far as I'm aware, most competitors don't use templates for these in the first place). It starts to be a problem once you get into things like segment trees, where most top competitors would be capable of coding them, but typing speed and accurate memorization start to play a significant role. Moreover, though, I would argue that a complete ban on prewritten code means that certain topics, such as FFT/NTT, various string data structures, and possibly certain flow algorithms, simply cannot appear on the competition at all because there's just too much code involved to memorize and regurgitate it all. (Or, if these do appear on the competition, the aforementioned issue of differentiating on the basis of memorization would still persist.)

    One might say that this sort of ban exists at the IOI and similar competitions, but the difference is that speed does not play nearly as significant a role in those contests. (I also would marginally support the IOI transitioning to a notebook system similar to the ICPC's, but that's a separate debate.)

    Third, a ban on prewritten code would make the competition less fun. There are three groups that this ban would affect:

    (a). The competitors. Banning template code would make this format less fun for competitors because it would require them to memorize code for which they previously used a library and because it would force them to spend more time typing standard algorithms and less time thinking and coding the unique parts of each solution. Also, the precedent is generally for programming contests to allow prewritten code, so without any reason to believe otherwise, we should expect that most competitors would prefer for any new formats to be the same way.

    (b). Competitive programmers spectating the event. Obviously, watching someone type up a standard algorithm won't be especially exciting to anyone who knows about algorithms themselves, so the competition will be less exciting for spectators with competitive programming experience.

    (c). Spectators without a background in competitive programming. To start, I think this group will probably be very small--it takes some background in algorithms to have any chance of understanding the problems or what the competitors are doing. Other activities that attract spectators beyond the people who actually participate in the activity themselves are generally easy to understand with essentially no background information. For example, competitive Tetris has recently gathered a significant following on YouTube because even though most people watching don't fully understand the mechanics behind the game, they can generally follow the action and understand what's going on. In contrast, what happens during a programming contest is essentially impossible to follow without some understanding of the algorithms involved.

    However, even if I'm wrong and some of these people do take to watching this format, I would argue that they're probably going to prefer a format without this ban because, given that they won't be able to follow the coding process, they will probably derive most of their entertainment from the commentary and the scoreboard. Therefore, we would prefer a format in which interesting things happen more frequently, which means that this ban is bad because it would slow down the pace of the competition.

    Overall, therefore, I would argue that this format is better both for competition and for spectators without this ban.

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it +19 Vote: I do not like it

      How did we arrive at normal="using prewritten code" and "you can't use FFT without library"? FFT is shorter than segtree, you know?

      You made A LOT of assumptions. Why "require librarians to memorize code for which they previously used a library" is bigger evil than "require non-librarians (I wanted to write 'normal competitors') to get a library and learn how to use it"?

      I highly doubt that non-red participants can really understand difficult ideas at typing speed, while for sure they could understand little tweaks/shortcuts in algorithms and data structures they know, so second point is also debatable.

      As for third one I don't see an argument here, you just making a wild assumption to prove your point. Here is wild assumption from the opposite side: spending more time on 'boring' code can provide commentators more time to explain other parts of solution.

      • »
        »
        »
        »
        5 years ago, # ^ |
          Vote: I like it +10 Vote: I do not like it

        Note: I am obviously biased just as you are on this question

        Forbidding to use a library is introducing somewhat artificial limit on what one can do during the contest. I am not saying that any such limit is bad — e. g. forbidding collaboration is obviously necessary for competition integrity — but I do not see justification behind this one. You do not want to invest time into building/learning to use your library, so everyone else should not have the ability? Let’s extend it a bit — you do not use ide, so let’s forbid those as well. And use of debuggers. The very same justification kinda works — why should one learn how to use those tools? But isn’t end result kinda absurd?

        • »
          »
          »
          »
          »
          5 years ago, # ^ |
            Vote: I like it -10 Vote: I do not like it

          I don't ask to ban prewritten code.

          I just was offended by labeling me as "not normal" by Geothermal, so I decided to provide view on some points from the "non-existing" side of people who don't have a library and not interested in getting one.

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

            I do not see where anyone was labeled as not normal in Geothermal comment (most generalized assumption I see is "most competitors"), but ok

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +35 Vote: I do not like it

    Thanks for the feedback! We did have a little trouble with the stream setup to show multiple screens at once, but in the future, we're definitely planning to have picture-in-picture or something similar. Do you think that might improve the 2v2 stream, or is it still too crazy?

    Regarding difficulty, it does seem like some hard problems, particularly the math ones, are harder to spectate. Do you think showing a stream of the contestants' faces and/or paper would help?

    Personally, I think prewritten code is a necessary evil; different languages already have different standard libraries, so prewritten code helps to even that out. I think the best solution is to have a large public prewritten code repository that everyone can use, like https://github.com/bqi343/USACO. In Lockout in particular, banning prewritten code makes it more annoying for contestants because it's such a speed contest, and it's not obviously more interesting to spectate tourist typing boilerplate, as others have pointed out.

»
5 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I really enjoyed watching, Thank you for streaming!

I think the tic-tac-toe variant would be interesting to tryout, as it would force more strategic thinking whilst looking at the score board. Otherwise the scoreboard is basically just used to decide what problems to not do.

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

thank you, but it was easy for me

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

I am very honored that my problems(ARC068 and ARC069) were used for Lockout 0 Grand Finals.
Thanks for everything!

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

I enjoyed the stream a lot! Would definitely like to see more. Was there any penalty for the wrong submission though? If not then since the rule was the same for both, in theory, it doesn't make a difference but a time penalty will help in few cases (when both the opponent is working on the same problem and first makes 3 attempts and solves a couple of seconds before the second). This is just a suggestion for the future (I am sure you must have thought about it already and decided not to but I wanted to put it here anyway just in case).

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

As I saw some comments from twitter, it would be fun if someone can build a battle system for this competition format for everyone to take part in ! Like we can choose difficulty level and system will automatically pick problem set that haven't been done for both sides.