Sykora
I see right through you.
Since we have quite a few knowledgeable programmers and more than a few budding programmers, I thought it'd be useful if we had a thread on programming challenges and the like.
In general,
These are some of the challenges I've found the most interesting :
1. Project Euler
Site : *projecteuler.net
Languages : Anything
My favorite up first. Project Euler is a collection of (mostly) mathematical problems that (in general) you'll have to write some sort of program to solve. It's a challenge (in the above sense of the word), so you have as much time as you want to solve the problems in any order using any language. It has the usual ranking system so you can compare yourself to everyone else, as well as within your country. New puzzles are added almost every month or so, but it can vary. The problems range from ridiculously easy, to impossibly hard. There are currently 170 of them. Another thing I like about this one is that each problem has its own forum thread, where people post how they solved it, with the code they used. However one can access the thread for a problem only if they've solved it.
2. Sphere Online Judge (SPOJ)
Site : *spoj.pl
Languages : Lots, 35 to be exact. And yes, you can submit in Brainf*ck Check the site for the full list.
SPOJ is good because it combines problems from almost every other source. They're not mathematical, just normal Computer Science problems. The 3 main limitations that they place on you are the running time, memory usage and code size. There are almost 2000 problems, most of them are easy to solve in general, but hard to solve within the restraints imposed.
3. UVa Online Judge
Site : *icpcres.ecs.baylor.edu/onlinejudge/
Languages : C, C++, Java, Pascal
The same as SPOJ, except you can only use those 4 languages. For this reason, I prefer SPOJ. Same format though, and lots of problems. Some of them are duplicates of SPOJ (or may be the other way around), but for the most part doable.
4. The Python Challenge
Site : *pythonchallenge.com
Languages : It should be obvious...
A dedicated challenge for my favorite language. As far as format goes, it's the same as KlueLESS, but with some required knowledge of Python. For some levels you'll need extra modules not provided with the standard distribution, but all of them are free downloads. This is possibly the best way to get interested in Python. There are 33 levels, and they get hard fairly quickly.
5. OSIX : The Open Source Institute.
Site : *osix.net
Languages : Any
Don't let the name fool you, there isn't much relation to Open Source. OSIX has a number of challenges, including the main "Geek Challenges" which are a series of problems one after the other. The problems are very interesting, but also get hard fairly quickly. Other problem types involve Bonus Levels, which are what you do when you get stuck on the main Geek Challenge. You can attempt these in any order. They also have reverse engineering challenges, and tests for various topics. The site is a bit buggy though, it forgets I'm logged in and keeps asking me for my password and I never get anything done. But that's probably my fault.
6. Code Golf
Site : *codegolf.com
Languages : Python, Perl, Ruby
The main focus of code golf is to solve the problem using the minimum number of keystrokes. The problems here are amazingly thought out, and the site in general is nice to read (no programming relevance, but it helps). You are ranked based on the number of bytes of your code, so the shorter the better. Solving these problems is by no means difficult. Coming anywhere near the top scores is insanely hard.
Post here if you're already doing any of these challenges, and definitely post if you've found another challenge that I haven't noted, I'll update my list.
We can discuss the problems, but some of these have very dedicated communities which do not post the solutions to the problems anywhere. I'd like to keep that going, because it takes the fun out of things.
In general,
- Contests are usually played out between participants in realtime.
- Challenges are mostly formats where you do the problem in your own time and submit the answer -- your score will increase if your answer verified.
- Online Judges are similar to challenges, but require you to submit the code itself, rather than the answer. The code will be run on the server, and you'll be told if your program passed. Online Judges are usually more difficult than Challenges becuase the server imposes a time limit.
These are some of the challenges I've found the most interesting :
1. Project Euler
Site : *projecteuler.net
Languages : Anything
My favorite up first. Project Euler is a collection of (mostly) mathematical problems that (in general) you'll have to write some sort of program to solve. It's a challenge (in the above sense of the word), so you have as much time as you want to solve the problems in any order using any language. It has the usual ranking system so you can compare yourself to everyone else, as well as within your country. New puzzles are added almost every month or so, but it can vary. The problems range from ridiculously easy, to impossibly hard. There are currently 170 of them. Another thing I like about this one is that each problem has its own forum thread, where people post how they solved it, with the code they used. However one can access the thread for a problem only if they've solved it.
2. Sphere Online Judge (SPOJ)
Site : *spoj.pl
Languages : Lots, 35 to be exact. And yes, you can submit in Brainf*ck Check the site for the full list.
SPOJ is good because it combines problems from almost every other source. They're not mathematical, just normal Computer Science problems. The 3 main limitations that they place on you are the running time, memory usage and code size. There are almost 2000 problems, most of them are easy to solve in general, but hard to solve within the restraints imposed.
3. UVa Online Judge
Site : *icpcres.ecs.baylor.edu/onlinejudge/
Languages : C, C++, Java, Pascal
The same as SPOJ, except you can only use those 4 languages. For this reason, I prefer SPOJ. Same format though, and lots of problems. Some of them are duplicates of SPOJ (or may be the other way around), but for the most part doable.
4. The Python Challenge
Site : *pythonchallenge.com
Languages : It should be obvious...
A dedicated challenge for my favorite language. As far as format goes, it's the same as KlueLESS, but with some required knowledge of Python. For some levels you'll need extra modules not provided with the standard distribution, but all of them are free downloads. This is possibly the best way to get interested in Python. There are 33 levels, and they get hard fairly quickly.
5. OSIX : The Open Source Institute.
Site : *osix.net
Languages : Any
Don't let the name fool you, there isn't much relation to Open Source. OSIX has a number of challenges, including the main "Geek Challenges" which are a series of problems one after the other. The problems are very interesting, but also get hard fairly quickly. Other problem types involve Bonus Levels, which are what you do when you get stuck on the main Geek Challenge. You can attempt these in any order. They also have reverse engineering challenges, and tests for various topics. The site is a bit buggy though, it forgets I'm logged in and keeps asking me for my password and I never get anything done. But that's probably my fault.
6. Code Golf
Site : *codegolf.com
Languages : Python, Perl, Ruby
The main focus of code golf is to solve the problem using the minimum number of keystrokes. The problems here are amazingly thought out, and the site in general is nice to read (no programming relevance, but it helps). You are ranked based on the number of bytes of your code, so the shorter the better. Solving these problems is by no means difficult. Coming anywhere near the top scores is insanely hard.
Post here if you're already doing any of these challenges, and definitely post if you've found another challenge that I haven't noted, I'll update my list.
We can discuss the problems, but some of these have very dedicated communities which do not post the solutions to the problems anywhere. I'd like to keep that going, because it takes the fun out of things.
Last edited: