The RubeTube

Life's a cube.  Solve it.


September 21, 2007
Last August 25 (geez that was a loooong time ago), I joined the first-ever Rubik's Cube Philippines Open (RCPO 2007). It was the first Rubik's cube tournament held in the Philippines that was officially sanctioned by the World Cube Association (WCA), and I felt tremendously honored to have been part of history in the making! The event was organized by the Philippine Cubers Association (PCA), of which I am a very active member lately.

See the official RCPO 2007 results here... in a nutshell, Mat Almeida (Fil-Portuguese guy, and also the WCA delegate) and JB Canares (who flew all the way from Cebu) dominated most of the events. My results: 17th (out of 28) in the 3x3x3 event, and 8th (out of 17) in the 2x2x2 event. I also have some photos and a couple of videos from the event.


The RCPO 2007 was held at Robinsons Metro East, from 10 AM lasting into the night. I went with Akie and Allan, who unfortunately (for them?) chose not to compete in the event, but they still accompanied me and I was very glad for their company even if they both had to leave early. It's a really good thing I went with them because I didn't know anyone and I was worried about embarrassing myself with my relatively slow times, but because I had my friends with me I could just laugh and just enjoy the day no matter what.

There were a couple of events in the RCPO 2007: 3x3x3, 3x3x3 one-handed, 3x3x3 blindfolded, 4x4x4, 5x5x5, and 2x2x2. Among those events, only the 3x3x3 had a 3-round structure: only the top 20 from round 1 would make it into round 2, and only the top 8 from round 2 would compete in the final round. For every event/round, each person has 5 tries to solve the puzzle. The puzzle is scrambled (by people designated as "scramblers" who also act as timekeepers) according to a computer-generated random sequence of moves. The best and worst among the 5 times are dropped (to account for good/bad luck) and the remaining 3 middle times are averaged to comprise your official average time for that event/round, and contestants are ranked according to their averages.

I only chose to join the 2x2x2 and 3x3x3 events. The 3x3x3 was the first event of the day. I was really nervous going up to the stage in front and I didn't even have any idea how to use the Stackmat timers! Fortunately, the Stackmats were a breeze to use and I didn't encounter any problems.

In round 1, I posted an average of 44.56 seconds, which was good for 19th place and barely made it to round 2! In round 2, I fared even better: an average of 38.31 seconds (my personal best average at the time!), good for 17th place, which unfortunately was far from the cut-off for the final round. So all in all, I ranked 17th out of 28 competitors... definitely better than I expected! My "X method" (corners-first) was not a very fast method, not ideal at all for speedcubing so I think I got a bit lucky here and there. Here is a video of my first-ever official solve (first try in round 1), with a time of 45.08 seconds:


Here is a photo of the Stackmat of my best time in round 2, 30.81 seconds, which was also my personal best at the time:


The 2x2x2 event was one of the final events of the day, just before the final round of the 3x3x3. I was pondering whether to even participate in the event because I had a ticket to a film-showing in the evening of Pisay the Movie (directed by Aureus Solito), set in my high school alma mater. I'd miss the film-showing if I chose to stay for the 2x2x2 event. It was a chance to meet up with some of my high school buddies but I decided that the RCPO was more important to me at the time; it would later turn out to be a very good decision and I'm very glad that I stayed...

...I managed 8th place (out of 17), with an average time of 14.21 seconds (the photo below is my official timesheet; yes it's just an index card):


...all this despite only having bought a 2x2x2 cube earlier in the day! So I didn't have a lot of time to practice solving the 2x2x2 cube. Luckily, my corners-first method was well-suited to solving the 2x2x2 (which is only made of corners, essentially) so the learning curve was not so steep. (Later on, after a few days of practice, my average dropped down to less than 12 seconds so I could've done better had I practiced earlier.) Here's a video of my best 2x2x2 solve (10.50 seconds):


All in all, my experience at the RCPO 2007 was a very memorable one. Not only did I come in the company of friends, I also made a couple of new speedcuber acquaintances: Victor, Benjo, Jerome, Vernon, and Mat! It also rekindled my passion for speedcubing and now I'm more determined than ever to reach new heights in speedcubing (i.e., beat my personal records), and hopefully win an event or two someday.

(I have an official record page with the WCA now... woohoo! Watch out for me in the future!)

Labels: , , ,

September 06, 2007
This past month has been the busiest and most eventful one in recent memory (for me). It's rather ironic, therefore, that I have not posted a single meaningful update about my personal life in nearly two months. (With the lone exception of my birthday post, which was even one day overdue!)

Perhaps it's because this past month has been so overwhelming that I've lost the time and energy (but not the interest) to blog. So I'm planning to make up for it since I have quite a bit of free time on my hands now. Here's a brief rundown of what's been going on in my life:
  1. I went on a Boracay vacation with AndreƩ. Just a 3-day, 2-night getaway, which also coincided with our second anniversary last August 13. We both had a blast! Everything was perfect!
  2. I joined the 2007 Rubik's Cube Philippines Open (RCPO 2007). This was the first-ever official Rubik's Cube competition held in the Philippines, held last August 25, and I felt tremendously honored to be part of history. I did well for myself, I think: 17th (out of 28) in the 3x3x3 category, and 8th (out of 17) in the 2x2x2 category. Not bad at all! And now I have my own personal records page with the World Cube Association. Cool, huh?
  3. I've resigned from HP. Yes, I'm no longer an HP employee. My last working day was last Friday, August 31. I lasted exactly one year at HP; quite interesting, doncha think? My last few weeks at HP were also very eventful and memorable (and busy).
  4. I'll be joining Microsoft. Some of you already know this, but for the benefit of those who don't, yes, I'm joining Microsoft. I'll be working at their headquarters in Redmond, WA as a Software Development Engineer in Test (SDET) starting October 1. I'm very busy with my preparations (with my move and all) and I'll be flying to the U.S. on September 27.
A lot of shocking and surprising developments, huh? I'll write more about those events in the next few posts. It should be much easier to write now that I've regained some of my momentum again.

Labels: , , , , , , , , ,

May 31, 2007
Got this interesting email from TopCoder a few days back:
Hello punzki,

Congratulations! The results of TopCoder SRM 350 are official. You have
won $32.0 (sic).
Sweet! This was after I'd dropped to Division 2 (again) and placed 1st in my room and 5th overall in SRM 350. I was excited about finally winning some TopCoder cash, until I found out about all the paperwork I need to accomplish within 60 days, and that TopCoder will withhold 30% in taxes from my winnings. Still, $22.40 is money well-earned and I plan on using it to celebrate a bit.

After the match, I moved back up to Division 1. Part of me wishes I hadn't, because I've had success in Division 2 before, and staying in Division 2 gives me my best chance of winning more prizes. But there's no way I'm tanking intentionally; I've still got coder's pride after all.

Labels: , ,

May 10, 2007
I'm very proud of my performance on today's TopCoder Single Round Match 348. First place in my room, and 7th overall in Division 2! How I wish today's match had cash at stake...


I would've ranked higher (at least 3rd overall, in fact!) if I hadn't resubmitted for the 1000-point problem, which got me a huge deduction. I had to recheck my solution because I noticed that the return type was long and my code only counted ints. And it later turns out that none of the system tests had a return value that exceeded int's capacity...

After dipping down to Division 2 for the past three matches, I'm now back to Division 1 with a blue rating! The competition is going to be tougher but at least I can really feel that I'm improving and that I'm more prepared for the harder problems.

Labels: , , ,

April 20, 2007
A couple of months ago, some of our managers engaged in a "Biggest Loser"-like contest. The goal? To lose the most weight after a fixed period of time. (To make things fair, they measured the percentage loss instead of just the raw difference.) The pot was huge; each manager put in a hefty 2,000 bucks, winner takes all.

Not to be outdone, us subordinates got into our own little contest: two months, 16 contestants, 500 bucks each, winner takes all, runner-up loses nothing (as a consolation). Do the math; that's a huge potential pay-off! And instead of measuring the percentage change in weight, we used the percentage change in body fat index as our metric; after all, muscle weighs more than fat which would put the already-fit people at a disadvantage.

(If you're wondering how we measure body fat index, we use those 5-peso machines at Mercury Drug which measures your height, weight, body fat index, and even blood pressure! Those machines are pretty inaccurate in my opinion, but they're the easiest way.)

It's been almost three weeks since our initial weigh-in and I've only recently started getting into it. My regimen is simple, almost too simple: 30-45 minutes of exercise in the morning for three times a week (mostly consisting of light jogging/walking), a "stricter" diet (only by my standards) of more fruit and fiber and less fried and fatty foods, lesser food intake (especially at night). I'm not in the company's limited-slots fitness program which entitles us to a month's access to Gold's Gym, but I'll try to get in next month.

And as an extra measure, because I'm absolutely crazy, I take the stairs up and down everyday at our office building. Unfortunately (or fortunately), HP is at the 7th floor (and also at the 14th, but thankfully I'm not located there). I have a technique to psych myself up for the stair-climbing task. I have to take 6 flights of stairs to get to the 7th. 6 flights is just 2 sets of 3 flights. One can easily climb 3 flights of stairs, right? So when I get to the 4th floor (which is pretty easy), I just say to myself, "One more time!" and convince myself that I just have to climb 3 more flights, which is again pretty easy, right?

It takes less than 2 minutes to get to the 7th floor. I try to maintain a constant, healthy pace; no cheat by slowing down! And I do all that with a 7-pound laptop on my back! After two weeks of climbing stairs, I've gotten really used to it and can do up to 3 sets up and down a day (not continuously, of course!) without getting my body wasted. But the question is: does it help? Or am I just working out my thighs?

(By the way, I started with a whopping 30.3% body fat... and 15-20% is normal for guys. Ick.)

Labels: , , , ,

April 15, 2007
Well, my run at the 2007 TopCoder Open has come to an end.

Algorithm Competition: To say that my performance in Online Round 1 was disappointing would be an understatement. I submitted to the two easiest problems, but one got successfully challenged and the other failed the system test. If I had just gotten one of them correct, I could've made Round 2. Looks like I'll need a lot more experience (and practice) if I want to get far in TopCoder. Next step: Work my way back up to a blue rating, and hopefully win some cash!

Marathon Match Competition: I didn't pass Online Round 3 (placed 91st, top 50 qualify to Round 4), but I definitely had loads more fun with this competition. I think I did better with the marathon matches because they encourage a lot of experimentation by trying out different approaches. Next step: Get a yellow rating (I'm very near!), and place in the top 20 in the next marathon match.

Hurrah! I've won two shirts!

(On a side note: This will be the last of my TopCoder Open posts. Until next year.)

Labels: , ,

April 07, 2007
First, the good news: I made it into the Online Round 1 (see list of qualifiers here)! The last qualifying round was a relative push-over (I ranked a respectable 105) because all the geniuses had already qualified in the first two rounds. Still, can't complain about the result... and I've already won a shirt!

Here's the bad news: Because of my indicated preference (you choose from three time slots for Online Round 1), I've been grouped with the heavy-hitters in TopCoder: Petr, ACRush, kalinov, and the lot. Which basically means that my chances of advancing to the next round are nil. I'm not being pessimistic, just realistic. But on the bright side, like I said... I've already won a shirt!

(I knew shouldn't have picked the time slot that falls on a weekend. It was the one that most people would pick first, and since those with higher rankings are prioritized, it makes sense that all the big names would be assigned there.)

Labels: , ,

April 03, 2007
I've qualified for Online Round 3 of the 2007 TopCoder Open Marathon Match Competition! Take a look at the standings here. I dropped from my provisional rank of 85 to my final rank of 105 (the top 200 qualify). Still, not bad!


After coasting into Round 2, I found myself hard-pressed to survive the cut this time. The objective of this Marathon Match (see problem statement) was to create a player AI for a poker-like game; the rules are similar to five-card draw except that there's only two cards, the card values are only from 0 to 4, and there's an infinite number of each value in the "deck".

I made submission after submission, fine-tuning my algorithm to improve my score. At some point, I found the key to getting a good score: fold when your hand sucks... which is what you're supposed to do in real poker anyway. Being a poker player really helped!

My next objective is to make it to Round 4 (duh!) and to get a yellow rating (currently at blue). The competition will be much tougher next time and the race to get into the top 50 will be very tight.

Labels: , , ,

March 29, 2007
There are three qualifying rounds for the 2007 TopCoder Open Algorithm Competition, and if you place in the top 550 in one of them, you qualify for the next round (Online Round 1). And the results from tonight's qualifiers were... discouraging, to say the least:


I ranked 705; I didn't qualify. I feel very fortunate though that I've still got two more qualifying rounds where I could redeem myself.

The best way to describe my performance today would be: I sucked. To be honest, I expected to qualify today. The problems weren't all that hard. The difficult problem was too tough for me and I never bothered with it, but the easy and moderate problems were a cinch... or so they were supposed to be.

(The following narration won't make much sense unless you know the rules.)

I got fixated on a messed-up and error-prone approach for the easy problem which I couldn't even get to work properly (runtime errors). Then I panicked, opened the moderate problem, thought it was too difficult, then went back to the easy problem. I finally managed to submit a a solution which didn't have any runtime errors.

The moderate problem turned out to be not as hard as I thought. I hastily submitted a working solution, but I lost a lot of points because the timer started ticking as soon as I opened it. After that, I reviewed my solution to the easy problem and found a bug. I fixed it and submitted it again, which merited a 10-percent penalty for resubmitting. Later on, despite all my efforts, it would fail the system test because the whole approach was just plain wrong.

Discouraged, I didn't bother with the difficult problem and simply waited out the rest of the Coding Phase. The Challenge Phase did not turn out well for me either. I made one unsuccessful challenge, and got beaten to the punch to three would-be successful challenges by a matter of seconds! Argh!

(Edit: I missed the second qualifying round today... One last chance on Wednesday!)

Labels: , , ,

March 22, 2007
I've qualified for Online Round 2 of the 2007 TopCoder Open Marathon Match Competition! Take a look at the standings here.


Well, that wasn't so hard. All you had to do was make a submission that compiled and you'd make it to the next round because the cut-off score was zero to become one of the top 500 advancers. Awesome achievement, huh? Well, I did score 2523.80 (and ranked 186) so I guess I actually earned my ticket to round 2... and a limited edition 2007 TopCoder Open t-shirt!

Labels: , , ,

March 19, 2007
I was invited by Dr. Rodrigo to be a mentor for the Ateneo teams joining in this year's Imagine Cup; more specifically, to the three teams joining the Software Design invitational. As a participant in the in IC 2004 (finalist in Brazil) and IC 2005 (didn't make the finals), I was more than happy to contribute what I can to the teams: project ideas, technical expertise, and lessons learned from the contest.

The theme of this year's Imagine Cup is "Imagine a world where technology enables a better education for all." Pretty tough theme, in my opinion. I had but one decent idea and it didn't quite pass the "for all" clause. If you'd like to help us out (Atenean or not), email me at punzki@gmail.com and I'll be glad to pass along your idea to the group.

As a mentor, I attended the Imagine Cup Philippines launch party last Saturday night at the Hard Rock Cafe in Glorietta 3. I got to meet the teams and share some of my ideas. I'm pretty excited about the students; they've got loads of potential and I can't wait to see what they come up with. (And the food at the party was good, too!) The party also brought back some bad memories which I shall leave unmentioned in this blog entry.

One of the activities was a game where each table was given a sheet of Manila paper and a couple of crayons and was asked to draw a symbol that represented Korea (South Korea, the site of the finals). Our table's symbol was easily the best among the entries. How could you lose with the geekiest Korean symbol possible: a poorly drawn "screenshot" of Starcraft, which is like Korea's national sport or something (for 7 years now!). For our efforts, we drew huge laughs from the judges and I scored a brand new paperback copy of Writing Secure Code ($32.99 at Amazon.com).
Sweet! The others in our group either got that, or Code Complete, which I already have.

The whole Starcraft thing was my idea, but Wil Li (a CS freshman) did most of the hard work. I wish I'd taken a picture of our drawing, but I guess you'll just have to settle for a picture of the book cover:

Labels: , , ,

March 12, 2007
Wish me luck, friends. I'm going to test my coding skills at the 2007 TopCoder Open. Aside from the lure of fame and fortune, I had this nagging problem solving itch that I felt compelled to scratch.

I'll be joining the traditional Algorithm Competition and I'll also be trying out the Marathon Match Competition for the first time. The Marathon Match Competition doesn't have the same nerve-wracking time pressure as the Algorithm Competition, which is good since I have responsibilities at work that I can't just drop.

Registration is closed for the Marathon Match but it's not too late to register for the other three events (Algorithm, Component Design and Development, Studio Design). What are you waiting for?

Labels: , ,

February 16, 2007
The Microsoft JobsBlog is running a coding contest. The grand prize? A chance to work at Microsoft! Read more about it here.

The first winner of the contest is now a Microsoft employee. I think he still had to pass his interview though.

(If you are having difficulties with their email system, you might want to read this.)

Labels: , ,

October 27, 2006

(If you do not know anything about the ACM-ICPC, it's the most prestigious programming contest in the world. I've had the opportunity to be a part of it for four straight years, and I've also had the good fortune to be a part of the top Philippine team every year and making the World Finals during my last two years. Not trying to boast here; just wanted to share why this particular contest is so special to me.)

I was on-hand to watch the awarding ceremonies for the ACM-ICPC Asia-Manila Regionals, which was held earlier this evening at the Holiday Inn near Robinson's Galleria. It was really cool to be able to meet up with our Ateneo contestants after the contest and to cheer for them during the awarding. I even had a nice little reunion with Topher and Allan, my teammates from last year.

You can view the results online here. Be warned though; they are not completely updated because they stopped updating the scoreboard one hour before the end of the contest, to maintain the suspense.

In summary:
  • 1st place and automatic World Finalists - Team "Near", University of Hong Kong (also last year's Manila champs)
  • 2nd place - Team "Makegumi", University of Tokyo (also last year's runner-ups)
  • 3rd place - Team "Maximum Tomato", Saitama University
  • Best Local Team/14th place overall - Team "Persistence", Ateneo de Manila University
  • 2nd Best Local Team/15th place overall - Team "DLSU 1", De La Salle University
  • 3rd Best Local Team/16th place overall - Team "UP Green-3", University of the Philippines - Diliman
Congratulations to team "Persistence" from Ateneo! The team members are Akie Mejia, Kenny Saavedra, and Michael Tan. The gap to the La Salle and UP Diliman teams was paper-thin; they all solved four problems and were separated by only 40 points! The Ateneo has held the title of best Philippine team for five years in a row now. Let's keep it up!

Also, congratulations to the other Ateneo teams on a job well done! We put up a good fight. I am personally very proud of all of you. It feels great to be an Atenean. To all the first-timers on the Ateneo team (including Rocky Camacho, one of my students during the summer), welcome to the Ateneo programming team family. I hope you are all excited to take part in future contests!

I also have some other thoughts on the contest and the current state of the ACM-ICPC in the Philippines. I will leave those for a future entry.

(Update: The official standings are now available.)

(Addendum: In less than a day since I posted this entry, I've had at least 50 people from Japan visiting my blog. You can see this from my Site Meter visitors by location (see below). They were all looking for the contest results. I'm not complaining about the extra traffic; I just find it amusing that the RubeTube has suddenly become the "official news site" for the Asia-Manila regionals.)

Labels: , ,

September 20, 2006
I'm admittedly not a humble person. But I don't think I'm being overly boastful by sharing with you my page on the Ateneo de Manila University Awards Database. Never knew such a site existed before; I only stumbled upon it yesterday. It lists the awards received by Ateneans at competitions in recent history.

Fifteen awards are listed under my name. There are no advanced search features so I can't verify that that's the most for an individual in the database, but you'd probably agree that fifteen is a lot (and I'm sure my list there isn't complete).

Why do I join all these contests? I've been at it since my grade school days. I have to admit, it's partly because of the recognition and the opportunity to market myself. It's also partly because of my fiercely competitive nature. But the biggest reason is that I'm always tremendously proud of the institutions I represent. I want recognition not just as an individual, but also as a product of the Ateneo and the Filipino nation.

I think I've accomplished my goal of helping let the world know that Filipinos (and Ateneans) truly kick ass. Up next: helping HP soar to new heights.

Labels: , , ,

September 16, 2006
I'm out. It's over for me. Here's the list of advancers to Round 2.


I just can't seem to get past Round 1 of Google Code Jam. Nevertheless, this year's result was better from last year's Code Jam. In Round 1, there are three problems worth 250, 500, and 1000 points each (as opposed to the qualifiers with just two problems: 250 and 1000). In 2005, I was only able to submit a solution for the 250-pointer, and it didn't make it past the Challenge Phase. (See the rules for more info; it's a 15-minute round where you can challenge the solutions of other people and make them fail.)

This year, I was only able to submit for the 250-pointer as well, but it was a solution solid enough not to get challenged. I did make a mistake though in unsuccessfully attempting to challenge, which got me a 25 point reduction. Still, I was able to submit my solution fast enough (208.61 points) so I netted 183.61 points in all. It would've been enough to advance (the "passing" score was 174.60) but my solution failed the System Testing Phase.

Tip for Code Jam 2007 participants: All you need to pass the Qualifying Round and Round 1 is a quick and correct submission for the 250-pointer.

The 250-point problem was like this: given a fraction in the form of n/d (where d and n are integers and d is positive) and a positive integer maxDenom, find a fraction n2/d2 such that d2 is less than or equal to maxDenom, d2 is positive, and the absolute difference between n/d and n2/d2 is as small as possible. If there are candidate ties, take the one with smaller d2; if the numerators are equal, take the one with smaller n2. My solution seemed correct, but my waterloo was floating-point number precision. Given that I was using C#, I should've used the decimal data type insted of double.

I just needed to do a find and replace from "double" to "decimal"! Argh!!! (pounds head in frustration)

Well, that's that. What really sucks is that I have to wait another year for the next Code Jam. But hey, at least I've got a shirt from last year!

Labels: , , , , ,

September 14, 2006
In case you didn't know yet, I made Round 1 of Google Code Jam 2006. I just registered for it officially via the Competition Arena. The coding phase begins at 10 PM local time, which gives me less than three hours to eat dinner and get rid of the nervous feeling in my gut. I'm going up against 999 of the world's best coders and it won't be any easier than last year, when I failed to advance past Round 1.

I'm the only representative from the Philippines to make it to Round 1 this year. I want to at least make it to Round 2 this time around. Maybe I can get national press coverage if that happens.

Nah...

Labels: , , ,

September 08, 2006
I advanced to Round 1 of Google Code Jam 2006! Woohoo!


I am officially one of the top 1000 coders in the world (if we use Code Jam as a benchmark). Also, I'm the only contestant from the Philippines who was able to advance so I've been given the opportunity to solely represent my motherland (I'm equally proud and dismayed). The complete list of qualifiers can be found here; look for "punzki".

The elimination round for Code Jam was held last Wednesday, starting 12 AM (local time) and ending 24 hours later (Thursday midnight). I came home terribly exhausted from work on Tuesday night, and was ready to sleep (at 11:59 PM) when Akie messaged me on YM to remind me that the elimination round was starting a minute later. I really wanted to go to bed but I might not have even less energy if I take it Wednesday night so I went ahead and took it.

The elimination round had five sets of problems; I was assigned to Set 1. Each set had two problems: one worth 250, and a harder one worth 750. The faster you submit a solution to a problem, the more points you get, but if it fails the system test, you get no points for it (detailed rules here). I was able to do the 250-point problem very quickly and got 236.12 points, but the second problem (a variant of Little Bishops, except that there are some unusable squares) proved much more difficult. I had a correct solution, but it was too slow and exceeded the two-second time limit no matter how many times I tried to optimize it. I'll have to take a look at the solutions of those who got it correct to see where I went wrong.

Here are some quick statistics that may help those who are aspiring to get past the elimination round for Code Jam 2007:
  • The lowest score that was able to qualify for Round 1 was a paltry 104.64. This was from Set 4, which had many qualifying scores in the low 100's.
  • For Set 1 (my set), the lowest qualifying score (rank 200) was 201.86. I got 236.12, which was enough to rank me 76th in Set 1.
  • For Set 1, only 27 were able to solve both problems. Four (ranked 28-31) got only the 750-point problem. All the rest (rank 32-200) were only able to solve the 250-pointer.
What do these numbers imply? To qualify for Round 1, you only need to solve the easy problem, but you must solve it relatively fast. This means that you should open the easy problem first (points don't get deducted until you open a problem) to make sure you have time to finish it. If you open the harder problem first and waste too much time on it, you might not have enough time for the easier one. Don't pressure yourself into getting both problems correct unless you were slow in solving the first problem. A score of 220 is generally safe; anything less than 200 is risky and will only qualify if the set is difficult. Some experienced contestants already know about this tip I'm giving you; they don't even bother to open the hard problem after they get the job done with the 250-point problem.

That's the only advice I can provide; I wasn't able to get past Round 1 last year, though I did get a free Code Jam 2005 shirt. Unfortunately, this year, they'll only be sending shirts to the top 250 from Round 2. Well, I guess that means that I'll just have to make the top 250 this year, right? Wish me luck!

Labels: , , , , ,

September 02, 2006
This afternoon, I served as a judge for the second CompSAt Inter-University Programming Competition (IUPC). The IUPC as an ACM-ICPC-style contest organized by CompSAt that serves as a "warmup" contest for the ACM-ICPC Manila Regional Contest in October, hosted by Ateneo de Manila University. This year, the IUPC was participated by 14 teams from five schools.

Organizer Neill Li asked me to be a judge a few months back and I was glad to oblige. As a battle-hardened veteran of the ICPC (four regionals, two world finals), I figured it was going to be a cinch to come up with two or three problems. But I put off the task until a few days before the contest and to make things worse, solving problems takes only half the effort that it takes to make them. It's tough enough to formulate a challenging problem and then have to solve it to make sure it's solvable. Nevertheless, I was able to get the job done and I was able to come up with three interesting problems:
  • Bored Dots - Inspired by the Flash game Bored Dots, which I got so frustrated with, I made a program to give me the solutions. Not-so-difficult search problem. Just do a brute-force search for the solution. No one in the IUPC was able to solve this but one team did at least try.
  • Roman Nvmerals - Determine if a string is a valid Roman numeral or not. It's simple enough to do, and there are many ways to solve it. The most straightforward solution is to write a program to generate the Roman numerals from I to MMMCMXCIX (1 to 3999); that'll give you all the valid Roman numerals and it's easy enough to do a search. Two teams were able to solve the problem.
  • l33t H4xX0r5 - Inspired by the l33t esoteric programming language. It looks very hard but really, it's not. The problem statement is just troublesome to read (i.e., discouraging, intimidating) but everything you need to solve the problem is in there. Unsurprisingly, not a single team gave it a try.
You can download my problem set here, complete with the solutions (in Java) and the judges' test input and output. You can also download the problem set of co-judge Eric Vidal. Unfortunately, I don't have a copy of Dr. Felix Muga's (the third judge) problem set; sorry about that.

BTW, the top three finishers in the contest were:
  1. De La Salle University (4 problems solved and they were only two in their team!)
  2. FEU-East Asia College (also 4 problems solved, but slower)
  3. Ateneo de Manila University (fastest to solve 3 problems)
Our winners were well-deserved. Congratulations!

P.S. Can anyone recommend an free online file storage service that'll let me publicly share files? It's sad that I have to resort to using my GeoCities account.

Labels: , , , , ,


About me



Mark Punzalan
a.k.a. "Punzki"
Location: Redmond, WA
Occupation: Softie

Current tag-line:
I'm alive!
Now reading:
The Bible (really!)
Latest obsession:
NBA playoffs (via streaming)

Around the web:
punzki @ punzki.com
punzki @ Blogger
punzki @ del.icio.us
punzki @ LinkedIn
punzki @ Friendster
punzki @ Bloglines
punzki @ YouTube
punzki @ Multiply

Email me: punzki@gmail.com

Search

RSS feed



What is RSS?

AdSense


Et cetera




Locations of visitors to this page


Pinoy Top Blogs
Fantasy Sports Live!
Firefox 2

Creative Commons License
This work is licensed under a Creative Commons License.

Powered by Blogger
and Blogger Templates