ACM Collegiate Programming Contest Winner Announced
Slob Nerd writes "The finals for this years ACM International Collegiate Programming Contest World Finals have just finished. And the winner is... St. Petersburg Institute of Fine Mechanics and Optics! Full results here, and details on all teams here. A pdf of the problems is also available. Congrats to all involved."
Many slashdotters will probably be pleased to know that the contest's environment OS was Red Hat Linux 9.0.
Full environment specs here.
I hear there's rumors on the Slashdots
1703-1914: Saint-Petersburg (or Sankt-Petersburg in German)
1914-1924: Petrograd
1924-1991: Leningrad
1991-....: Saint-Petersburg
(I'm one of the Directors of the contest, so I know of what I speak.) "Score" is a terrible title. It should be "penalty". The teams are ranked first by the number of problems they got correct. Thus St. P's came in first, because they were the only team to get 7 problems correct. Among the four teams that got 6 problems correct, they are ranked from smallest penalty (KTH) to highest (MIT). Penalty is computed as the total cumulative time it takes you to solve a problem. So if you solve one problem after 30 minutes and a second problem after 30 additional minutes, your penalty is 90 minutes (30 from the first problem, 60 from the second). In addition, you are given 20 minutes of extra penalty for each incorrect submission to a problem that you eventually get correct.
You're bitter for that?
:-).
I'm bitter because when my team won the championship (UCLA, 1989), there were no prizes! We got a $500 scholarship for the department.
At any rate, there are worse ways to get screwed in the contest. The following year, when we defended our title, we never made it out of the regionals. That year, solutions were submitted on floppies and tested & scored automatically. Turned out that one of the floppies we were given already had a file on it, and unbeknownst to us, the scoring program kept testing that file. We discovered the problem just as the contest was ending, and the judges not only had no sympathy for us, they refused to test our program and score it as submitted at the end of the contest.
That year, the prizes included laptops for all the members of the winning team.
The next year, they stopped letting graduate students compete
I've wondered on and off if the ACM will ever hold a contest between all the past champions. Not that I've programmed in years, mind you.
-- Scott
Being a Smug Lisp Weenie, i'd like to point out that only lower level languages don't have support for arbitrary-size integers :p
;)
On the other hand, many BASICs *do*. So don't go assuming it means a language is any good.
(As a smug ocaml user, I'd like to point out that my language of choice not only provides the option of arbitrary-precision arithmetic, but also the option of turning it off for efficiency purposes. And (it (doesn't (have (so (many (parentheses (either.))))))))
When we got to regionals though, it was clear that we didn't have the experience needed to go further. We had 8 hours I believe, and sadly, a few of those were fighting with stupid language problems, instead of actually solving problems. As an example, for one of the problems, we ended up overflowing a double in C, because the data was too big. The solution? Rebuild the same problem in Java, using a BigInt...
Back in 1991 or 1992 I competed in this; at least back then arbirtrary precision arithmetic was a standard trick they throw into one of the problems.
In preparation for the contest we divided up several of those kinds of things and wrote simple libraries to deal with those problems (you were allowed to bring hardcopy documentation or code). I worked on the abitrary precision code and don't remember the other libs we developed.
That you were able to use a built in arbitrary precsion lib by switching languages takes all the fun out. =)
Higher score is worse. Score is a measure of the time it took to complete the problems.
BTW:
Both definitions of factorial (recursive and non-recursive) are perfectly good (mathematically) ways of defining the function. However, in the Real World, there's a large difference: even in lazy languages, allocating the space for the list (stream? generator? i'm not very well-versed in Haskell) is going to take memory and computing time. In fact, i think that in this particular (trivial) example, allocation will take as much if not more resources than generating the data itself. The recursive definition, on the other hand, does not present this problem, since the numbers are generated on-the-fly (and the function is tail recursive).
So, while defining factorial as the multiplication of a list might be very elegant, it's not extremely efficient (in both languages that are lazy like Haskell and those that aren't like, say, Lisp), since data is generated and then immediately thrown away. The recursive function remains elegant while not being wasteful. In fact, a compiler that recognizes tail-recursion should make it as efficient as the iterative version.
Try Corewar @ www.koth.org - rec.games.corewar
An excellent point!
I was also comparing what I had learned in college with my father's experience (PhD from Russia), and by the end of undergraduate college its pretty even. Where the un-even-ness is, is the level of education in elementary and high school. In Russia you would know Calculus, Chemistry, Phyiscs and Biology by the time you leave high school, in the US, you'd be lucky if you take one.
However, in college you are forced to quickly catch up on all of those things, which places you in a lot of stress, and since it is learned much quicker, it is also quicker forgotten.
The education level of the elementary and high-school systems in the US needs a lot of work.
I've had a similar experience in the U.S. (Pennsylvania, specifically.) I finished 5 grades in the USSR (the part that is now Ukraine.) I started 6th grade here in the U.S., and up until 10th grade, everything that I was being taught was something that I had already learned. (Obviously, this excludes some parts of U.S.-specific subjects, like English.)
If he is sore about losing then it's his problem.
"unformed" lied when he said I didn't have fun.
Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.