tfg's blog

By tfg, history, 18 months ago, In English

Can we please use standard terminology in problems? Or at least put it in bold that the problem has a non-standard definition?

https://codeforces.me/contest/2108/problem/E The problem in question. It refers to edge contraction as "edge deletion". This confused the heck out of me, because I imagined that the problem was actually about edge deletion (delete edge, add a new edge in its place so that it remains a tree).

I also wanted to ask setters to use native english speakers, but it seems that there was more than one such tester so I have no idea how this ended up being left in the actual round...

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

»
18 months ago, hide # |
 
Vote: I like it +21 Vote: I do not like it

You are right, using the term "contraction" would definitely be the better choice, but actually it wasn't a problem of not being a native English speaker.
Me and all the setters are native in Russian, nonetheless the original Russian statement also uses the word for "deletion"(удаление), not "contraction"(стягивание/сжатие).

So yeah, we chose not the best one. Probably testers didn't notice this since the definition of the process follows in the next paragraph.
But thanks, I'll try to pay more attention to this.

  • »
    »
    18 months ago, hide # ^ |
     
    Vote: I like it +23 Vote: I do not like it

    Just to clarify how important I think this is: I'm sure that most people skip over the definition of what a tree is, then comes a problem that defines a tree as a DAG, that'd drive everyone nuts right?

    https://codeforces.me/contest/2084/problem/E is a decent example of how to handle this in my opinion, at least put the non-standard part in bold. In today's E I think it can be somewhat excusable because not everyone knows what edge contraction is, but if someone knew it during testing and didn't comment on it because there's the definition right after then I think that's a problem.

    • »
      »
      »
      18 months ago, hide # ^ |
       
      Vote: I like it +4 Vote: I do not like it

      That's why we have footnotes with standard definitions. You can skip these, but you are not really supposed to skip anything in the main part of the statement.

      • »
        »
        »
        »
        18 months ago, hide # ^ |
        ← Rev. 2  
        Vote: I like it +19 Vote: I do not like it

        I call doing it on purpose "trying to add difficulty by having a bad statement".

        First time I've heard that it's decided on codeforces that footnotes are for standard definitions and anything goes on statements. I'll keep that in mind next time.

    • »
      »
      »
      18 months ago, hide # ^ |
       
      Vote: I like it +20 Vote: I do not like it

      Yes, I guess the term of contraction is way less spread and used(compared to graph and DAG), and it just doesn't pop up when you read the described process.
      So I rather meant that the testers just didn't think about it, not that they ignored it.

»
18 months ago, hide # |
 
Vote: I like it +33 Vote: I do not like it

This is not a native speaker thing. 99.9% of native speakers of English haven't heard of edge anything except... the meaning that goes around the internet these days, which is unrelated to graph theory... and in fact have a limited vocabulary.

You need people who know that this is part of a standard terminology and pay enough attention to it. It's not strictly necessary to remember how it should be called since it can be looked up based on definition, but if you're not someone that currently knows graph theory (having gone through a class at some point in life doesn't count), you're just going to move over it as an operation with a definition and not dwell on terminology.

It's perfectly possible to be unable to hold a casual conversation in English and yet able to correct this.

Priorities matter too. At least when I test stuff, this is a detail for me, main priority is on making sure that I can figure out what the problem wants me to do without travelling to visit the Oracle of Delphi, estimate difficulty, make bad solutions that pass if tests are weak, ensure nothing is straight up wrong. The operation is defined, whether it's called eating the edge or deleting it doesn't really matter even if I notice that it should be called contraction. Then I report that I didn't find any mistakes. Only if I was told to also make sure the statement is clear and formally correct, then I'd point it out — and also say that the story should be removed.

  • »
    »
    18 months ago, hide # ^ |
    ← Rev. 2  
    Vote: I like it +1 Vote: I do not like it

    Fair enough, I admit that I underestimated how niche of a term this can be at first.

    As for priorities, my main priority when testing is that the competitor should have a good experience during the contest so it 100% includes minor stuff like this and general statement quality because having imprecise/badly written statements annoys me a lot but hey maybe that's just me.

    Edit: this being said, I'm open to testing div2 rounds as long as they aren't div1 as well since div1s come once in a blue moon.