Mar 12, 2007 03:07
This weekend was the CS games, which were loads of fun as always. First a recap of the weekend:
Friday:
It's Friday morning and we're leaving for the CS Games at 10am, but it's 9am and I don't have my passport yet. My mom sent it and it should have arrived around Thursday, but it didn't. I'm frantically running around talking to the people at the post office trying to figure out if my passport came and if it just hasn't gotten sorted into my box yet. No luck, all the mail has been sorted, but the flat mail hasn't arrived from the distribution center (and actually hasn't even gotten there yet). Damn. This could make border crossings just that much more annoying. Oh well, nothing I can do about it. Head off on a wonderful 6 hour+ car ride using a macbook running on a car adapter booted into windows running microsoft streets & trips with a GPS attached for directions (super geeky, but also very awesome). No problems at the border, the guy barely looked at my driver's license with the stack of passports. Get to the competition with lots of time to spare, check in, head over to a table and pull out our 8 laptops and get onto the wireless network. (Nerd Sidenote: initially my laptop had problems getting online, but we later figured out that it was likely due to network congestion not an incorrect setup on my part. Which means I actually set up wireless on linux correctly). My first event is Scripting, which I reviewed/learned how to do a few days prior. The problems were much easier than the ones from the prior year, which I had been practicing with, and we were able to solve a lot of them with little trouble. Overall, the team was feeling fairly confident (other than the poor performance on the problem of the day) that we were off to a good start.
Saturday:
Wake up bright and early. First events of the day are Sports and Web Development. We find out that the sport is Dodgeball and Mike and Chris run off to play. The problem of the day became a huge group effort where we divided up the work and each wrote slightly different approaches to solve the problem and tested them independently. We had systematic brute force (in two different variations), random brute force, genetic algorithms, the works. We ran the random brute force on as many machines as possible including the multi processor research machines back on campus, which didn't help us in the end, but we wanted as much processing power as we could get. Dave Lu!!'s genetic algorithm came up with our best solution, but for a while my systematic brute force was in the lead.
Mike and Chris return from sports victorious. Ganz and Chief return from web dev full of confidence later to find out we finished first in the event. Next round of challenges, our debugging team comes back in one hour (two hours to spare), achieving full marks in the process. They help me and David with the UbiChallenge which is reminiscent of last year's The Challenge problems. We manage to come up with fairly good answers for almost every question, with most of the answers coming from wikipedia.
Last group of events for the night and my next event: Surprise Competition. The surprise is to teach 3 non-technical students an assigned concept in computer science. We are given 10 minutes to prepare a lecture after receiving the topic and then 10 minutes to give the lecture. Our topic was graphs and went very well I thought.
Competitions are done for the day and we're debating about going out to the after party or if we want to sleep instead. We're in second place in the standings by a small margin. Then of course, they distribute the problem of the night: 3 programming problems. The first: implement the fastest sort you can that will sort a file full of integers and output the sorted version. 2) Parse the XML files of the DIA diagram software and print out natural language descriptions from it. 3) Write a tool that can perform "Cartoonization" on an image (i.e. adds black outlines, blurs colors, etc). We really liked the problems and thought we could ace them all and that this could help us get some of the points we need. We split the problems up and get to work. Some of us are up as late as 6am working on the problems while others get some rest. We got some great solutions and were pretty happy with them. (Nerd Sidenote: the programs were to be submitted by e-mail before 8am on Sunday, but we didn't need to be at breakfast at the competition until 8:30, so to save the extra time to sleep in we needed to use the wireless at the hotel. The hotel wireless however, isn't free. Jason had been looking around and trying to find some information at the competition and discovered that he might be able to use a VPN to evade the wireless firewall. Jason connects to his server back on campus over a VPN on udp/53 (typically the DNS port) and is able to evade the firewall and get full access to wireless. Chalk one up to the nerds :))
Sunday:
Everyone is groggy and exhausted from very little sleep, but we check out of the hotel and get to the competition. Last round of events and I'm in Cryptography. We initially thought we would do very poorly in this event because neither David nor I had any real background in cryptography. Luckily, the contest designers realized that this might be the general case when designing this event. The event was designed in such a way that it was possible to do without any outside cryptography knowledge, but it might have been made a bit easier with such knowledge. Things like letter frequency order and the cryptographic algorithms used were provided. The event was broken into 3 parts: 1) A set of 4 substitution ciphers, 2) a vigenere ciper (with provided key length and a method for finding the key based on the solutions to part 1), and 3) A ADFGVX cipher (the method and a pair of cipher text and plain text was provided). We started at the top and solved the substitution ciphers in a reasonable amount of time. This meant we didn't need to think about part 2 and simply had to decrypt using the key we now had. Part 3 took a little bit more work. We both were a little confused about the exact setup of the problem and where to start trying to break it. We figured things out and were able to get the key for the cipher with about 15 minutes left in the event. We spent the last few minutes frantically trying to decrypt the message, but in our frantic state we kept making mistakes and had to repeatedly start over with the decryption process. In the end, we found out we won the Crypto event despite our earlier thoughts of failure. Shortly after Cryptography finished the scoreboard was taken down so we had no idea where we sat. At the time the board went down we were in first by a small margin.
Dave Lu!! pulled together his magic and came up with an awesome song "Code Together Right Now (Over Beer)" (to the tune of "Come Together Right Now") which got us a first place for the Group Event. In the end, Team Ham Sandwich arose victoriously with a 9 point lead, which is more than even the highest weighted events. The CS Games Cup returns to Rochester and this marks the first time in the five years since the competition's inception that a school was able to win two years in a row. While our team in its entirety will be graduating this year, the second team should be able to step up to the plate next year and follow in our footsteps.