If you happen to like maths, and assuming you enjoy programming since you’re wandering through these whereabouts, here’s a very interesting challenge for you:
Project Euler, hosted by mathschallenge.net, a site dedicated “to the puzzling world of mathematics”.
The idea is pretty engaging: there’s a list of problems to be solved by a computer program in less than a minute. Each problem has an initial score, which decreases as it is solved by participants. For instance, problem number 1 asks you to add all the natural numbers below 1000 that are multiples of 3 or 5, has been solved by 899 people and scores 2 points, while to get the 20 points of problem 106 you’ll have to write a program that finds the minimum number of comparisons needed to identify special sum sets, a feat only accomplished by 48 participants. As of this writing, there are no unsolved problems, so, you see, the contest is challenging but doable.
Other cool services for participants include a discussion forum for each problem, to which you gain access once you solve it, and a table listing the programming languages used by successful eulerians. I’m sorry to report that C/C++ is, for what i’ve seen, always the one with more solvers, with Delphi usually in the second place and Java, Python and Ruby alternating in a distant third. Lisp and Haskell make timid appearances. No Smalltalk or Scheme, oh my.
However, there’s a surprising fact. It’s no wonder that C/C++ is the language with more winners, since it’s the most used (23% of participants). The same goes for the other forerunners. But, when you calculate the number of wins per user, the language of choice of the highest scoring users is, of all things, APL/J/K. Amusing.
Besides my pet ones, there are a couple of “languages” that i’d like to see in there: the terrific Computer Algebra Systems (to be featured in a blog near you any time soon) Axiom and Maxima, which seem the right tool for this kind of problems. If, like me, you think that accepting them would be a bit like cheating, don’t worry: they accept Mathematica as a programming language. And even Pencil & Paper, for all you old-school guys and gals.
So go create an account, pick your problems and there you’re: lots of fun.