I've searched around for different challenge sites, and most of them seem to be geared towards difficulty in problem solving logically, rather than trying to use your language of choice to do something you haven't used it for. Their center is around mathematics rather than function design.
Some kind of point system for correctly solving challenges, or solving them the most efficient/smallest would be neat as well.
Here's my list:
Wow! UVa Online Judge has really changed their site... I may have to get back into their problems - their last site design didn't really make for a fun experience.
Sphere Online Judge [1] is another one.
USACO is for high school students but they have some fun problems with some surprising complexities, their main page is here [2], with the gateway to the problems here [3].
TopCoder, already mentioned is really good and can seriously have positive effects for your future employment.
Found another, but I've never used it: ACM-ICPC [4]
[1] http://www.spoj.pl/problems/classical/Project Euler [1], from the site: "Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve."
[1] http://projecteuler.net/My personal favorite is SPOJ, its very addicting, sometimes you can end up spending hours n hours solving problems, you never know when the alarm starts ringing to tell you that its good morning! Apart from that topcoder is the best if you wish to take programming as a sport!
Don't forget to checkout http://codegolf.com/
"Based on the original perl golf, Code Golf allows you to show off your code-fu by trying to solve coding problems using the least number of keystrokes.
You're not just limited to Perl either - PHP, Python and Ruby are all available too.
Challenges are always open, and your entries are automatically scored so you can start playing right away!"
Try these sites:
I belive you can have fun with "High School Programming League" at http://hs.spoj.pl/ it just has started.
Personally I find the UVa Online Judge to be quite fun. There is a huge list of "test" problems that you can attempt to solve in a variety of languages (Java, ANSI C, C++, PASCAL) and then submit your solution. There was a programming club at my university that practiced with these problems and ended up placing above the team from MIT in a university programming competition. Your submitted code is automatically executed and judged on a variety of things like execution time, correctness of output, etc. Here is the site for you to check it out: http://icpcres.ecs.baylor.edu/onlinejudge/index.php
I recommend starting with Volume 1, Problem 100 - The 3n + 1 Problem
I would also go through the history of problems for ACM's Programing Contest [1].
[1] http://cm2prod.baylor.edu/login.jsfI would like to recommend http://refactormycode.com/ as it is fun, educational and helps other people at the same time. Just grab some code and polish it until it shines :)
http://www.rubyquiz.com/ is no longer active, but if you're into ruby trying the 150 or so quizzes will certainly keep you occupied (and it's still going on, just on rubytalk).
Even if you're not a rubist, the solutions are very interesting; I always find it instructional by seeing how smart people solved nontrivial problems.
Not exactly what you asked for but I have used PLEAC [1]. Look at one of the tasks in one language and write it in another. It covers quite wide range of tasks but really could do with much better explanations.
[1] http://pleac.sourceforge.net/The Daily WTF's Bring Your Own Code [1] puzzles.
[1] http://thedailywtf.com/Series/Bring_Your_Own_Code.aspx4clojure [1] is a very good list of challenges for people learning clojure.
[1] http://4clojure.com/