Posted
by
CowboyNeal
on Monday August 14, 2006 @06:23PM
from the best-and-brightest dept.

Bamfarooni writes "Registration for Google Code Jam 2006 opens today.
The event consists of 3 online rounds (September 5-6, September 14
and September 19,) in which participants compete to solve three
coding problems faster and more accurately than their competitors.
If you've got what it takes, and more of it than anyone else,
then you can take home up to $10k for your code-fu."

Nah. It's more for publicity than recruiting. Look at the venue. Those in the US that want to go to NYC are already there. Those overseas will have trouble with customs, given that they are 1) foreign, and 2) good at hacking code. It would have been smarter to choose Toronto or Vancouver, where it would be safer and easier for the contestants to travel.

I can see several reasons why it's to Google's, the contest's, and the contestants' advantage to have the final elimination round take place at t

Are the problems going to be more interesting this year? I looked at last year's questions, but they seemed very dull; the kind of things any first year computer science student ought to be able to find an optimal solution to.

I don't think I am one of the top 100 coders in the world, and so if I entered I probably wouldn't win any money. This being the case, the only reason to enter would be for the intellectual challenge; something which seems to be missing. And Google wonder why they have a problem

You say that like it is a bad thing. I'd rather keep my well-paid job than get a measly $10,000 and 'recognition'.I get money for rising to challenges, money for patents filed, money for new ideas. Of course it helps keep me away from the killing floor when job-cuts come arround, but I've survived 11 years...I'm doing pretty well.

This is the Republican America, where 9-5 is a dream. Just accept that you need to work a little harder than most countries...in order to benefit from a richer life-style than m

College students have time to burn and the people who enter probably consider this to be fun (personally I find interesting problems to be fun). Some people choose to value their life by how much they enjoy it and not by how much money they can make. Others may view this as a good way of making connections, a name for oneself or to impress potential future employers.If I was a true coder and didn't already have plans for the dates in question I would strongly consider it. Seems like a fun and interesting th

The potential for $10k given 3 hours of work, just like the lottery is the potential for $x million given $1 and 30 seconds of work. Also without preparing (a lot possibly) before hand the chances of getting that are fairly slim.

As a college student, it definitely seems like a cool competition. It isn't neccessarily for the money as much as it for the possible prestige. Perhaps this matters less to professionals with "better things to do with their time".

Also, if you register, there's a place to upload your resume. This seems like a good way to possible create an opening for a future job...What better way to recruit than a programming competition?

It's not like these problems are designed so that you are solving things that Google needs solved. Trust me, you won't be able to put a dent in any sizable problem in an hour. Instead, the problems are designed to be fun and interesting, and to select coders for great problem solving ability.

Yes, Perl code would have a better chance, because there's a part of the competition where you can challenge other people's solutions - and everyone's gonna challenge the other languages before they try to read Perl.

Really? So where's OCaml? And Smalltalk? And Scala? And Lisp + CLOS? And many, many more?The problem us that they only want to offer up some small subset of languages instead of opening it up to any language you wish to bring to the party, which is how most every programming contest should be run. THe ICFP contest allows all languages, you'd think mighty Google could figure out how to open up the door.

Part of being a good programmer means picking the right tool for the job. I looked at some of the questions last year, and found I could answer them in about half as much Smalltalk as Java. The Smalltalk was also more readable, and more flexible. Programming in any of the languages they list is like typing with one hand; you might want to try it for a bit, but it's not something you would pick when you needed to be productive.

I think a more glaring omission is that there is not a single language that could be considered being of the functional language family - or even if you'd count Python as one (I definitely wouldn't), no statically typed functional languages. But I guess the "you need to be able to read other people's code" explains that partially.

While it's true that certain types of questions get repeated in different forms (e.g. the language of the problem might clue you in to it having a dynamic programming solution) I highly doubt that in the next few years (or the next 5-20 years for that matter) a bot will be able to do any more than identify the reuse of a previous question with different wording and solve this.

This is easy to circumvent, however, as more complicated/obscure natural language constructs can be used to confuse the bot (botfu

Not only that, he's suggesting that the bot will be able to solve it the best way possible, to win the competition. But the best way possible is not algorithmically determinable, as of yet. If there was a way to solve an abitrary problem through computers - well, I guess that means that computers have achieved something like human intelligence, human beings are Turing machines, computers can program themselves, and they don't need us anymore. Welcome to the Matrix.This will not happen in the near future if

I think he was joking, aluding to the poker bots which are often thought, by laymen, to be able to clean out the online players. It should be clear to any programmer that programming bots for this kind of a contest are unlikely to be even attempted in the near future.

Um, well actually, with the right starting conditions set and a decent genetic programming algorithm, it's already possible for a computer to produce something better than its creators could do manually. So, whilst not being able to parse the question in natural english, once translated by a human, this really isn't so far fetched at all.

Or at least poorly written.
Want a chance at $165,000? Here's how: Google Code Jam 2006. This competition is a chance for you to use your skills and compete against top programmers from all over the world.
Thats on the registration page.
On the main page it's slightly different, first prize 10k, 2-10 5k and so on until it all adds up to the suggested 165k.
True, it all adds up, but if you wanted to enter and were given a link only to the registration page it can be quite misleading.

The worst part of this is you have to use their IDE. Which means no auto-completion, no color coding, no help, etc. As someone who relies on that kind of lookup stuff daily for their work, I can't see how any normal professional will do well in that environment. However, I can see how a college student who has to memorize all of the code/functions because they are tested on it and required to write code in class will have an easier time with the contest.I wonder if they consider it cheating to write your

All they say is that you cannot use TopCoder plugins or modify the applet, but do not consider it cheating to copy the problem statement into another IDE, do your development there, and copy the code back. In fact, a good handwritten (e.g. you wrote it yourself and did not get it from a TC plugin) regular expression or two should suffice to parse the problem statement into class/method stubs and test cases. You tie running that regular expression to a macro and you're all set.

Here is a list of 10 problems [felix-halim.net] used in the google code jam india. This was found with with google query google code jam 250 [google.com] (250 stands for the point value of the easy problem).

You can practice on similiar problems in the same environment in the topcoder testing arena. Register for topcoder here [topcoder.com]. Referrer rrenaud [topcoder.com].

... if they included some previous questions with their previous results [google.com]. That way, you could know what these people had done in order to win the prizes they won. Would be much more interesting than a table with apparently meaningless numbers in it.

Heh, I had the same problem in my ap computer science ab class last year. Though, the teacher told everyone how to do it after a day or so. Of course, by then, I'd done it, become bored, and coded Knight's Tour in C++. (ap compsci classes are in java =/)

Heh. After looking at the problem I just went and coded up a rough version in maybe half an hour or 40 minutes. It would need some correction to handle each cell of the array containing a string that held multiple grid cells (grid is typed as an 2D array of char), but it basically works.

That doesn't look all that hard (famous last words, but still) if you use recursion. Although my solution wins no points for efficiency, here's the pseudocode.int solutions = 0array target =...matrix maze =...

Google is being tricksy with their examples for this problem in order to make a simple search appear viable. They do, however, provide a hint of the impending combinatorial explosion in the 2x2 example of all "A" letters, which despite being tiny has 108 solutions. Scaling this example up to the maximum grid size of 50 × 50 and the maximum word length of 50 characters reveals the sinister nature of the problem: there are about 50 × 50 × 8^49 (= 4.5e47) legal paths, and a straightforward sea

Thanks. I am curious if anyone noticed a relationship between last year problems and this year Google "secondary services" from an implementation point of view? It is at least difficult to find last year problems on their site and it seems to be something to make available Easily to new players?

If you want to practice for the Google Code Jam, you can do ordinary topcoder single round matches. Topcoder runs the contest and uses the same technology to host the Google Code Jam as their ordinary matches. You can register for topcoder here [topcoder.com]. Referrer rrenaud [topcoder.com];). The next two topcoder matches are next Saturday at noon EST, and Thursday, August 24th at 11 am EST.

I know you were trying to be funny, but... in all seriousness, VB.NET and C# are very similar in capabilities, especially with their 2005 (.NET Framework 2.0) versions, and I barely even hesitate to say that they are practically the same language with a different syntax, though I believe there still are a few things one can do that the other can't, and vice versa.

I moved over from VB.NET to C# (granted, I was already familiar with C++ and Java, the inspiration for C#'s syntax) without needing anything mor

For the first part, they're all object oriented, so Perl is (for the most part) out of the question as per languages to use. Also, if you look at the sheer numbers of people these days that know VB.NET vs. the number of people that know Perl, the number of people who know.NET is significantly higher. Most college students are taught VB.NET as their first language.

For the first part, they're all object oriented, so Perl is (for the most part) out of the question as per languages to use.

I'll ignore the remark about Perl's OOP and go right to the heart of it. Object oriented programming is hardly a part of the TopCoder/Google Code Jam experience. Any language that has the capacity to understand strings and multi-dimensional lists (including C) could possibly be added to TopCoder. One of the biggest complaints against Perl's addition to TC is that it would make the

This will be the first year that Python will be allowed along side the traditional TopCoder languages (Java, C++, C#, and VB). I think it will be very interesting to see how Python, which more often than not get can get more done with less code and less time, will compare to the heavier languages like C#, C++, and Java. I wonder if Guido [artima.com] working at Google had anything to do with it?

This will be the first year that Python will be allowed along side the traditional TopCoder languages (Java, C++, C#, and VB). I think it will be very interesting to see how Python, which more often than not get can get more done with less code and less time, will compare to the heavier languages like C#, C++, and Java.

Yes, but read the fine print. Programs must run in under a certain amount of time. And they write that because of it's slower speed, Python may not be able to solve some of the problems. P

Sure, you may be able to write faster but the question is: Will it run faster?Otherwise, this could be a problem:

*NOTE: All submissions have a maximum of 2 seconds of runtime per test case. This limit is used in harder problems to force submissions to be of a certain complexity. Because of the inherent speed differences between Python and the other offered languages is large, some problems may require extra optimization or not be solvable using the Python language.

A look at who is not eligible [google.com] to participate shows that it includes "citizens of Iran, Cuba..." etc. I have been reading the Advogato blog of roozbeh [advogato.org] for a while, an Iranian who is pissed off he can't participate. Here is a middle class Iranian who wants to participate in something like this and he is shown the door. Of course maybe there's some legal reasons for Google to do this, one can look at their kow-towing to the Chinese government to see it wouldn't be for any ethical reason.

"Cash and prizes, including t-shirts, will not be provided to residents of Iran, Iraq, Libya, Sudan or Syria."

It does not say that said residents are not eligible to participate.

And... just speculating, but Google might not want to send stuff to those countries in fear that it might be said to be an American company funding terrorists... Not that it would be true, but they might be trying to prevent some possible bad press. Meh...

It's a real pity you have to be at least 18 to enter the Championship round. I have a friend who finished in the top 10 in Qualifying last year, but he was only 16 so he wasn't allowed to take part in the Championship round.

Hey, if you include Ruby with it's blocks, you need to include Smalltalk to. Yes. Fraud! We still need: Javascript, Ruby, PHP, AWK, Fortran, Perl, Lisp, Prolog, Bash and Smalltalk. (I'm still busy learning the last)

the thing is, the topcoder infrastructure supports certain languages and it costs them $$$ to implement additional ones. When there is a payoff to adding Ruby, I'm certain they will add it.Using Python is problematic anyway as they state that due to slow runtime of python, some problems won't be solvable. They will time out. I expect this would apply to Ruby also. And I would hate to invest the time to solve something in Python/Ruby only to find out that it won't run, then have to port it.

I would imagine google is looking for ways that are faster than their current methods (hence the runtime limits) and not necessarily interested in how long it took to code it. This way they get to see many different insights into how the problem can be looked at.

*NOTE: All submissions have a maximum of 2 seconds of runtime per test case. This limit is used in harder problems to force submissions to be of a certain complexity. Because of the inherent speed differences between Python and the other offered languages is large, some problems may require extra optimization or not be solvable using the Python language.

Considering Ruby (in my experience, at least) is considerable slower than Python, I can see why they left out Ruby.