Hacker News new | ask | show | jobs
by modulus1 4444 days ago
I'm always amazed at the speed of these guys. Top guy got it all done in an hour. I don't know if they are geniuses or if they practice this stuff every day.
5 comments

Speaking as the current #20 position [0] on the Google Code Jam scoreboard...

I'm in my university's team for the ACM ICPC [1]. We practice about one or two times per week, where each practice session is 5 hours. Some of the stronger programmers really practice this stuff every day. cf. Nick Wu's description of his preparation for programming contests [2].

[0] In 5 hours, the large input sets will be judged. I might move up or down the rank list depending on whether my answers for the large input were correct.

[1] http://icpc.baylor.edu/

[2] http://www.quora.com/Specific-Quora-Users/Nick-Wu-Did-your-t...

If you don't mind me asking, how do you guys? I always compete in my university's "local" contest, which is basically a tryout for competing for a spot on the team that goes to the ACM. I try doing practice problems, but when I can't solve one, I'm not sure where to go from there.
It just takes a bit of practice. Once you've seen a certain type of problem before, it is easy to identify other problems that can be somehow reduced to a known problem. Speed comes with practice too... soon, basic constructs like for-loops just get etched into muscle memory. Don't worry, I couldn't even solve a single problem in my first tryout at my university.

At my university, after a practice session, we sometimes discuss solutions to problems so that those who couldn't figure them out will know how to solve them in the future. After being told the solution to a problem you couldn't solve, you should try coding it up anyway.

First place was taken by Gennady.Korotkevich, also known as "tourist." He has a history of placing extremely highly in sport programming contests[0], is at the top of topcoder's algorithm section[1], and has had several articles[2,3] written about him.

I imagine there's a lot of practice involved, but I wasn't able to spot an interview that specified the exact amount of time tourist spends coding or studying algorithms every day.

[0] http://qr.ae/vcU6j

[1] http://community.topcoder.com/tc?module=AlgoRank

[2] http://www.wired.com/2010/11/mf_algorithmolympics/

[3] http://www.smh.com.au/lifestyle/the-whiz-kid-20120821-24k69....

There's an interview with Korotkevich dating from IOI 2009:

- How many hours a day are you in front of the computer?

- Not more than three to four. I like playing football and table tennis, so I try to find time for sports as well.

http://www.ioi2009.org/downloads/br8-3str-en.pdf

Three to four hours of practice a day is quite a lot, in comparison Johnny Ho (http://www.quora.com/TopCoder/Who-is-Johnny-Ho) only did about 1 or 2 a day while practicing for IOI 2012

Source: me asking that exact question to him at IOI 2012

"Not more than three to four." != "Three or four hours practicing every day consistently"

Also, this guy has been performing at an extremely high level for years. If he didn't do any competitive programming practice at all for a year, I doubt you'd notice a big difference in his performance.

Some of the top guys at Topcoder Open / Google Code Jam don't even participate in matches outside of the yearly tournament and I doubt they are practicing consistently (i.e. once you get to that level at problem solving, performance doesn't seem to decay much and certainly much less than in a similar situation for athletes - though these guys are students / engineers whose brains are still being stimulated and solving other kinds of problems outside of competitions).

Just a thought: I supposed many of them are in fact very smart people. Hours of practice certainly helps a lot as you can break down a complex problem into smaller and familiar problem sets. Some people like Nick Wu probably isn't your average student. Also luck plays a major part. If you just happen to know how to solve problem X you can solve it quickly.
"I don't know if they are geniuses or if they practice this stuff every day."

It's not an either/or question though =) By most common definitions, the guys at the top, specially those that reach the finals are "geniuses" at algorithmic problem solving, yes.

I have a suspicion that they have solved thousands upon thousands of these problems, developing a library of sorts. They can probably translate these problems into ones they have solutions for and just work from there.

Maybe that's jealousy talking, though.

I think it is a feat to practice to the point of having seen thousands of problems and still know (or have a felling of) the way to go.

(Actually, most of the good sport coders that I know develop that knack of knowing where the solution is headed, without pinpointing a previous problem)