[thread=1367071]This was a fun one[/thread].
So, a guy walks into the Distributed Computing forum. He wants to calculate something: How many distinct games are possible in bowling? He's developed a program that will do it, but it will take something like 18,000 CPU-years. So he wants to make it a distributed computing problem, and have lots of volunteers run the app.
Well, I thought it shouldn't take that long to solve the problem. I first had to learn
how bowling scoring works, though. It's not as simple as you might think.
But since the guy had posted his source code, I went ahead and started optimizing it. Slowly but surely, through several versions, I made it faster. At first, as I recall, I was only able to implement
dynamic programming in it partially, because at each step a strike could lead to extra steps. But, eventually, I found some kind of double-dynamic-programming solution. I don't remember much about how it worked except that's what I called it, and using it I got a program that solved the entire problem in a fraction of a second.
tl;dr: I made a program faster by about 14 orders of magnitude.
I should also post my anagram unscrambler sometime. I don't remember how it works, but at the time I thought the algorithm might be novel.