# MATLAB Programming Contest Blog

## Limbo! The 100 Node Challenge

The surprises keep on coming. I was impressed with the improvements made through Sunday, particularly noting Sergey’s big improvement with StarCat1. As I said, it’s hard to make big gains by the time Sunday rolls around, and Sergey showed us a 3.71% improvement. So I was shocked to see Peter van der Walle take the lead this morning with an incredible 4.42% improvement on his nickelfelpeter. Not only that, the size of the code started to nosedive at that point, leading us to some fierce, lean code.

We often do a 1000 node challenge right about now in the contest, but since the leading entries are already at about 1000, we really wanted to set the limbo bar low. The new challenge is to see what you can do when you’re limited to only 100 nodes. Yes, that’s a tiny number, but necessity is the mother of invention. Whoever can achieve the best score by midnight on Tuesday, UTC (7 PM in the eastern US) will win the 100 Node Challenge. The top of the Statistics page has a section dedicated to showing who’s in the lead while satisfying the required 100 node limitation.

## Sergey Y. is the Big Sunday Pusher

Sergey Y.‘s remarkable entry StarCat1 would have, in one crushing blow, won either the Saturday Leap prize or the Sunday Push prize. Since he chose to submit it on Sunday, he walks away with the laurels for the Sunday Push. Congratulations Sergey for the single biggest improvement since Nick Howe’s Skookumchuck2 early on Friday.

I’m a big fan of the creative naming that we see in many of the contest entries. Skookumchuck? It’s a narrow inlet in British Columbia. I had to look it up too. And speaking of trivia, here’s a question for you. The boat illustration we used for this contest has special relevance for Sergey (and the contest team). Can you identify the source of the image and why it is significant? Leave your answer in the comments here.

## Leap Prize and Sunday Push

If you go to the bottom of the Statistics page, you see a colorful plot with two pink bands labeled “leap” and “push”. What do these refer to?

We like to acknowledge people who make significant contributions over the weekend, so we give prizes for the Saturday Leap and the Sunday Push. We give out a Leap prize for the person who makes the greatest single biggest contribution (percent improvement) on Saturday, as measured from 00:00 UTC to 23:59 UTC. That time period is over now, and the winner is Fel, with his entry TLM – save time and invest in result, which yielded a 2.85% improvement. We’d also like to give an honorable mention to Sebastian Ullman, who made a remarkable 2.64% improvement much later in the day with splitmin1500. It only gets harder to make big improvements, so congratulations to both Fel and Sebastian for their contributions!

The Sunday Push prize will be given to the person who makes the greatest cumulative contribution (based on the sum of percent improvements) to the contest. The period for this prize is midnight to midnight for the whole of Sunday, UTC. So this means it’s starting right now. If you’re the slow and steady type, now is the time to get busy!

## Nick Howe once again

Here’s a belated post to say that Nick did it again, claiming the Twilight Prize with his Nautilus entry. Over on the newsgroup we read that Bradley just missed winning Twilight because he had the wrong time for the start of Daylight. Bad luck Bradley, but there are more prizes to be won! Good luck to everyone this weekend.

## Nick Howe is our Prince of Darkness

The polls are closed and the results are in: contest veteran Nick Howe (who has ruled the Dark more than once) is our newest Prince of Darkness. His code “Equatorial” came in at half the score of his nearest competitor. Congratulations Nick, and well done!

I wanted to point out a change about timing in the rules. We listed the start and stop times for the contest as being 16:00 UTC… but we were off by one. The times are keyed to noon here in Natick, and that is in fact 17:00 UTC. Nick Howe would have won the Darkness prize with either a 16:00 UTC or a 17:00 UTC cut-off, so it had no effect today, but please note the change going forward.

## The Sailing Home Contest Begins!

The Fall 2010 MATLAB Programming Contest is Sailing Home and we are officially underway!

See Ned’s contest rules to find out how to play.

If you are a veteran of our contests, you will probably jump right to the rules. If this is your first contest, you might want to read the Contest FAQ or About the contest.  To be truly inspired, take a look at our Hall of Fame to read about the winners of past contests.

Post any questions or comments you may have to the Newsgroup thread.

See you online!

Helen

## Fall 2010 Contest Date Announcement

It’s that time of year again!  The Fall MATLAB Programming contest will be held from November 10th through November 17th.The contest launches around noon (Boston time) when we publish the contest rules.  As is our tradition, we will have mini-contests with prizes throughout the contest.The contest queues will close at noon on November 17th  (Boston time).  Once all the submissions are scored, the Grand Prize winner will be announced.

Helen and the Contest Team.

## Hannes Wins!

In the final minutes all the secret tricks, squirreled away for the last desperate sprint, come flying into the daylight at last. We saw strong finishes from Sergey Y., Yi Cao, Abhisek Ukil, and srach. But in the end, Hannes Naudé prevailed, closing the contest with a smashing blow that knocked a whopping tenth of a percent off the score. In the past Hannes has won (together with his sometimes comrade-in-arms Cobus Potgieter) two mid-contest prizes, but this is his first Grand Prize. His hauntingly named Overfitting is a fool’s game stayed atop the grinding queue for hours, daring anyone to displace it. None could.

Congratulations, Hannes, on a job well done!

On the newsgroup, Hannes says some of his techniques included “intentionally overfitting the dataset, something for which I have a deep seated dislike”. I hope we can get him to write about his winning entry along with a digression on the nature of robustness and brittleness in machine learning. It’s clear that the contest is maddeningly prone to overfitting, but it’s also hard to banish overfitting from any contest or benchmark. As always, we are looking for ways to make the next contest better, and now is a good time to reflect on things we could improve about the interface and the problem. How might we encourage a richer exploration of the solution space without damaging the fun back-and-forth nature of tweak battles? Another big puzzle for us here is how to make the contest more appealing to the confused and curious crowds who watch from the sidelines. How would you turn the contest into a better spectator sport? Tell us in the newsgroup, or here in the comments, or use the User Voice page we set up for this purpose.

As always, thanks to everyone for joining us, and we hope to see you next time.

## Tuesday Longevity Prize Winner!

News flash – Ned has just declared Alan Chalker the winner of the Tuesday Longevity Prize, with Yi Cao coming in a close second. Congratulations to Alan (and his Auto Tweeker) for winning another mini-contest!There’s about an hour left in this season’s contest. I’ve already been hearing through the grape vine that folks are fine-tuning their winning strategies for the last minute dash for the finish line.  So time to go grab one more cup of coffee or energy drink and get back to that list of great ideas you wanted to try.

## Mid-Contest Analysis

Last night, while many of you were coming up with new strategies for approaching this contest, Ned was busy looking at past submissions. Take a look at his thoughts in the Mid-Contest Analysis.  There is a Japanese version available as well.

Just one more day to go!  Enjoy!

Helen

If you use Twitter, you’ll want to see who the latest leader is with our ContestLeaders Twitter feed. Matt’s rigged it up so you can follow a link directly back to the entry in question. For instance, at this very moment the leader is Amitabh Verma’s Midnight Oil Burner3, and the magic bit.ly link will take you there: http://bit.ly/9obZKI.

## Smaller Than One Thousand

Alan Chalker, another old friend of the contest, is our winner for the K-Node Challenge, with one of his many entries named Node Tweak (id 2907). I suspect Alan is relieved not to have to give unique names to his entries anymore, since his most recent 200 entries have a total of five distinct names between them. Congratulations, and welcome back to the winner’s circle Alan!

These mini-contests are good practice for the final rush on Wednesday: remember to pace yourself, because you are limited to no more than ten entries every ten minutes. You don’t want to save your best entry for the last minute, only to find that you’ve exhausted your quota just as time is expiring. Sock puppet accounts are frowned upon. Remember, to claim the prize you would have to come forward and confess that you were running multiple accounts.

## The K-Node Challenge

The Tuesday Longevity Prize has been announced, but for this afternoon, we’ll add another quick contest. The current leader of the contest has grown to almost 500 lines of code and some 16,000 characters of text. From MATLAB’s point of view, that equates to a parse tree with around 3500 nodes. We challenge you, for the next few hours, to figure out how to slim down the current leader in such a way that it still does a good job with only 1000 nodes.

The K-Node Prize will go to the entry with the best score that

1. has less than 1000 nodes, and
2. is submitted before 22:00 UTC Monday night

As a reminder, this is how you can calculate your node count for any MATLAB file filename.

t = mtree(filename,'-file');
length(t.nodesize)


Please note: you don’t need to shorten your variable names or remove comments to win this challenge. We use node count (and not character or line count) precisely so you can keep the code readable despite being rewarded for brevity.

UPDATE: We’ve added a section to the top of the Statistics page to indicate who’s doing the best on the K-Node challenge. That saves you the trouble of bouncing back and forth between pages to see who has a low node count.

We’re now using badges to acknowledge who’s winning which prizes. So far, there are only five badges, one for each of the mini-contests we’ve completed so far. Over time, we’ll add the badges that correspond to prizes over previous contests, but for now they’ll just apply to this contest. To check out the badges, just take a look at our winners: Jan, Oliver, Mike, Alex, and Abhisek.

Want a badge? Well, you can always win the Grand Prize on Wednesday. But here’s another mini-contest to shoot for: The Tuesday Longevity Prize. Whoever stays in the lead with a single entry for the longest amount of time on Tuesday (midnight to midnight, UTC) wins the prize. The winner will need to take the lead any time on Tuesday, and will receive credit for all the time spent in the lead, including Wednesday. Any ties will be broken by whoever appeared most recently.

## Weekend Winners

The weekend is over, and we have winners for the Saturday Leap and Sunday Push prizes. As of this writing, we have just over 2500 entries to the overall contest, and it’s remarkable to see how much of that action came over the weekend. There were some amazing back-and-forth battles between contest luminaries such as Sergey Y., srach, Jan Langer, and Amitabh Verma. But in the end, Alex P. wins the Saturday Leap prize for filter adjusting 03, a dramatic improvement that arrived only 41 minutes after midnight UTC, very early Saturday morning. According to his profile, Alex P. lives close to the Greenwich Meridian, so he must have been up late. Congrulations Alex!

If the Leap is a sprint that can be won with a single inspired entry, the Sunday Push is more of a grueling marathon. Only someone who grinds away a good part of their weekend is going to take the prize. So a special congratulations to Push winner Abhisek Ukil who managed to take the lead 14 separate times with his Pori* series. Now I want to know what Pori stands for…

## Stats are up and running

We’re still tuning things with this new interface, but Matt’s got the statistics page fired up. You can now see lots of good data on who’s doing what. Unfortunately, the links to the individual entries don’t work yet (they’re still using the old link structure), but we’ll get that sorted out before long. [UPDATE: the entry links are working properly now]

With the stats page running, we’re in a position to go ahead with the Saturday Leap prize and the always popular Big Sunday Push prize. These prizes are defined as follows: whoever makes the biggest percentage improvement with a single entry on Saturday wins the Leap prize, and whoever makes the biggest percentage improvement aggregated across all their entries on Sunday wins a prize. Since we’ve switched over to universal time (UTC), that means Saturday has already started, so Alex P.’s recent improvements will be grandfathered in.

Good luck!

## Mike Russell is the Early Bird

The scores are all in, and we can now say that Mike Russell wins the Early Bird prize for his entry Picture Quality Enhance 7-14. You can see from the diff that a few modifications to Oliver’s earlier Twilight winner did the trick.

Oliver set a blistering pace early on, but according to his post on the newsgroup, he’s hanging up the keyboard and heading back to work. Say it ain’t so, Oliver! Or at least, as Nick Howe says in the next message, “would you mind sharing the key ideas behind your twilight winner?”

I had promised to do the same visualization with the Early Bird winner. I did, but visually the difference is very hard to spot, so I’m not going to repost the image.

## Oliver’s entry and an Early Bird contest

I thought it would be fun to see how Oliver’s twilight winner would do against a familiar picture. Here’s MathWorks Chief Scientist Cleve Moler, as sensed by Last roll of the dice with 100 and 500 queries. Nicely done! Who can do better?

And here’s an announcement for an Early Bird mini-contest. Whoever has the best score by 21:00 UTC (that’s 5 PM here in Natick, for what it’s worth), will be our Early Bird winner. I’ll do the same visualization for the Early Bird winner… it’ll be interesting to see if there’s any noticeable difference.

## Let there be light!

We’ve entered the Daylight phase of the contest, which will extend from now to the end of the contest next Wednesday.

Our Twilight Winner is Oliver Woodford, with his entry Last roll of the dice. Go ahead and click on that link… now you can look at the code that’s doing the magic. Oliver seems to thrive in the twilight, given that he also won the twilight prize in the last contest. Congratulations Oliver!

## Jan Langer wins the Darkness Prize

Jan Langer is our new Prince of Darkness, adding to his considerable pile of trophies from earlier contests (including another Darkness Prize from the Army Ants contest). His entry ilgaz scores 9:0 was in the lead at noon today (16:00 UTC) and so becomes our winner. Congratulations Jan!

## New Contest Website Features

Alan Chalker asked in a Newsreader post if I could overview some of the new features of the new contest site. Ned and I reviewed the requests in UserVoice from last season.  Ned is going to go and update the specific requests in that listing, but I thought I’d share some of my favorite features.

• Require login. This has been a standing request for many years.  Doing this allows us to have user profiles that you can click through. Having known users names also helps us get more meaningful reports since we know the data for each user is being aggregated.
• Max 10 submits per player in 10 minutes: This is another request from the community do minimize the queue flooding especially towards the end of the contest. If anyone updates their queue flooding scripts for the new contest, after each 10 files, you will get an error message.
• Show  pass/fail code during darkness. As Alan noted in an early email, this is now enabled. The original request described the issue that it helps players see what entries have failed and why.
• Standardize the UI. By displaying data in standard MATLAB Central page/table layout,  users can see more data on a single page. For instance, on the Submission Page you can now view all submissions, the queue and also scored submissions. On the Player Page, you can sort by either the player name or by the number of submissions per player.

A great deal of effort was made to pull over features that you used to use in the old system.  Things like diff and clone exist and are very easy to use. There have been a great deal of changes that you don’t really see. Things like making the system more scalable to support our large contest following and, my favorite, making contests easier to start-up and run!

So that’s my list of favorite things. What’s your favorite feature new or old? What features are still on  your wishlist?

## Compression Sensing Contest Launch!

The 2010 Spring Contest kicks off now. The challenge for this contest is based on compression sensing technology for digital images. Find out more details on the Rules Page.

For those of you who have participated in the MATLAB Central Contest before,  you will notice that we have rewritten the contest application. You will need to log in to submit or to comment on an existing submission.

I am looking forward to a fun week. Good luck to everyone!

Helen

## Spring 2010 MATLAB Contest starts next week!

Hello Contest Fans!

Some of you have probably noticed that we’ve been quiet about the MATLAB Contest lately. That’s because we’ve been hard at work at revamping our Contest website and creating a new game for this season’s contest! I think that you will find that it was worth the wait.

Our Spring Contest will contest will start at noon Eastern time on Wednesday, April 28th. It will run until noon, Wednesday, May 5th.  Now is the time to check your calendars and block out some time to come join the fun.

See you soon!

Helen and the MATLAB Central Contest Team

## Alfonso is the winner!

Congratulations to Alfonso Nieto-Castañón, whose impressive breakthrough code lasttry01 pulled ahead of the crowd in the final minutes. MikeR was clever enough to know that Alfonso had a good chance of slipping into the lead, and he was lucky enough to have the computer run just a little bit faster when he resubmitted Alfonso’s code, but since it’s an exact clone (take a look at the official diff between lasttry01 and A27), we have no qualms about awarding the grand prize to Alfonso. Well done!

Thanks everyone for playing, and we look forward to seeing you next time.

## Contest is closed

The contest is now closed. As many of you noticed, the entry submission door was left open for a while, but it’s closed now. Don’t worry… any entries that arrived after 12 noon Natick time will be disqualified.

At the current rate of entry evaluation, it looks like we’ll have an official winner sometime after midnight Eastern Standard Time. In the meantime, if you want to make sure the queue is healthy, the Contest Status Twitter account is a good tool to consult.

Also, while the contest is fresh in your mind, please visit our UserVoice page to help us make the next contest even better.

Thanks for playing, everyone!

The MATLAB Programming Contest is a semi-annual competition where contestants submit MATLAB code to try to solve a challenge.

These postings are the author's and don't necessarily represent the opinions of MathWorks.