Tales of Code, Packets and Programming

Programming Problem Sites - An Index

22 Apr 2016

In this Article, I collected some websites that provide programming problems.

r/daily_programmer

This is a nice sub-reddit on reddit. On r/daily_programmer you are presented with easy to hard problems that are to be solved by a small program. 3 times a week a new problem is presented. The problems include the input the program has to expect and the supposed output.

There is also an archive of r/daily_programmer which collects roughly 500-600 problems. FreddieV4 scraped the posts and setup a git repository containing the problems here. And because I hate the thought that good resources disappear, I grabbed a snapshot of the repository (which is published under MIT License)

Solutions are provided by other reddit users.

CodeGold StackExchange

This site is similar to r/dailyprogrammer_ and provides rated problems for golfing in your favorite programming language. I don't see how many problems there are, as they are represented as stack-exchange questions. Personally I like r/dailyprogrammer_ more.

projecteuler.net

An archive of mathematical problems that ought to be solved by thinking about the mathematical problem and come up with a (clever) solution in form of a program. It helps if your programming language comes with bignums and mathematical functions. The initial problems focus a lot on primes. Currently there are 546 available problems.

There are no solutions until you solved a problem. But many people post their solution on a blog or somewhere, so google is your friend.

rosalind.info

A nice site if you are into bioinformatics. You learn the topic through solving problems around biology using programs. With around 284 problems you will have enough problems at your hand to get more solid in bioinformatics.

Solutions are provided once you solved the problem, like project euler.

rosettacode.org

If you need collection of more or less easy tasks for learning a programming language or testing one you are developing, then this site is for you. It provides roughly 800 so called Programming Tasks which range from simple numerical computations to XML handling, GUI Window creation and RSA code.

As problem solving is not the main purpose of the site, you can hardly say that solutions are provided. The aim of the site is to provide the solutions for any programming language. So you will have many examples to learn from.

programmingpraxis.com

This is another nice site that just wants to provide problems for you to solve and practice your programming skills while doing so. The problems are designed to take roughly an hour, which of course greatly depends on your skills, whether you tackled the problem already and the used programming language. You have around 490 problems to sharpen your saw there.

Solutions are provided usually in form of a Scheme snippet.

UVa online-judge

Multiple sites over the internet offer you to let your solutions being judged by an online judge. This site is one of those. There is a really really huge collection of problems on these. Roughly estimated, in case there are no duplicates (there are probably) there should be around 3000 problems there if you check out the Browser Problems section.

The site provides also a submissions/solving and users/solving rate for you, so you can estimate how hard a problem might be. There are also extensive statistics on each problem, showing the users that tried them and run time of the solutions together with the used programming language.

Each problem is explained in a small PDF document, together with expected input format, expected output format and an example input/output set.

I'm really impressed by the amount of problems provided here.

Solutions are not provided. But you can at least see how hard a problem is in general by looking at the statistics.

uHunt

This project accompanies the UVa online-judge by providing a web API and statistics.

Sphere online judge

Another online judge site. The layout is much more modern and refined. And it comes with a quite pretentious slogan "Become a true programming master". You don't become a programming master just by solving problems. A large part of a great software developer and programmer is writing maintainable and well written code. However, like UVa online-judge the site provides statistics that help to see how hard a problem is and it also provides automated checking of your solution. Many languages are supported and the problems are well presented. It will probably really help you to "Learn how to code and build efficient algorithms" like their sub slogan says.

There are about 5900 problems in their database. I guess, after seeing the large database of other online judge systems, they will be similiar or duplicated problems when comparing this site to others. The site also provides a comment section, that can be read before solving, which makes it more unique compared to the other online judges.

Overall this site looks well designed and even provides an up/down vote for problems. This makes it quite modern. I don't know whether there are solutions after you solved the problem.

Timus Online Judge

Their description brings it to the point: "Timus Online Judge is the largest Russian archive of programming problems with automatic judging system. "

This one is similar to the above listed UVa online-judge. A huge archive of problems, with about 1000 problems. The problems are as usual nicely presented and given with expected input, output and some sample input and output.

ACM ICPC @ H.I.T. Online Judge

This one is very similar to the UVa and Timus Online Judge listed above. Roughly 2000 problems are presented nicely as usual. But this time everything is provided from China.

Peking University Judge Online for ACIP/ICPC

Another university in china that presents around 3000 problems for you to solve. Basic statistics are provided like with ACM ICPC and other similar educational sites.

Tianjin University Online Judge System

Another site from China, with over 3000 problems. The problems are not as nicely presented with regard to the layout. But the presentation is usable. Overall comparable with ACM ICPC and Timus Online Judge.

codeabbey

Like others already discussed this site also offers online scoring of your problem solutions. But this site comes with a much less huge database of problems. But the 213 problems at the current time are probably of a higher quality. The even offer translations of a few problems in other (spoken) languages.

By solving problems you get so called blessing points, which add up to your rank. If you reach a certain rank, you get a certificate.

This probably helps to motivate, and might even prove useful if you are on a job hunt. I would however not bet on this as your sole qualification for a job hunt.

You get your test data for your programs after you logged in. And there is no solution upfront (obviously).

exercism

Another site that wants to help programming newbies to learn. The unique feature of this site is, that it provides so called exercises in over 30 programming languages, usually coupled with a test suite to directly test your code.

In each of the 30 language you can find on average 40 (+- 20) exercises. So about 120 problems with test suites. Solutions are not provided as far as I see. But the test cases will tell you directly how well you progress. This can be very motivating.

Kattis

Roughly 1000 nicely presented programming problems are presented here. You can submit solutions like usual and look at stats of other submitters. These problems are like usual sourced from programming contests around the world. The site also provides you with a ranking list you might find interesting.

codechef

A very shiny page with a modern layout. With alone roughly 400+ problems in the easy category this site also has a large database of problems. You can also see the successfull submissions on this site, but the statistics are not as advanced as on uHunt.

However, this site provides - which seems to be unique - source code of the solutions before you actually submitted anything. This can of course be used to spoil your fun, but it can also be used to actually learn from your failed attempts. Depends on you.

This site also seems to provide forums for discussions and tries to foster a community to help each other.

CodeKata

The idea behind this site is, that you, as professional programmer who usually writes software to a deadline or within a specified time frame, find 45-60 minutes to just play around. Playing around means, you goof around, experiment or whatever with a small program to advance and practice your programming/developer skills.

For this he provides 21 so called Katas themed around simple programming problems you might practice on.

Overall a nice idea. But the problem set is a bit limited. However, you can make katas from any of the other sources I listed in this article.

99 Lisp Problems

A nice set of small problems which are originally based on problems defined for Prolog. Just in case, I made a local mirror of these. You get 99 problems and their solution in form of some Lisp code. The page seems to be old, and here and there are some links broken.

Ruby Quiz

This site is aimed at the Ruby developers out there. You are presented with 156 problems, usually together with some Ruby code snippets. Solutions are also available.

hacker.org

I have not looked into this in depth, as you have to login. But there is a challenge system which challenges your hacking skills. So it might be worth a look.

rankk

Another rather weird looking site that challenges you. It has puzzles, mathematical and programming stuff and other challenges. You can raise their Pyramid by solving these. This site might also be worth a look.

topcoder

This site looks rather commercial. A site where "Experts are competing from nearly every country." It tries to attract developers with prizes, money a fancy web design and an image of someone sitting on a rock using a cellphone. You decide for your self whether this site is something you might try.

IBM Ponder This

This is IBMs puzzle site. Not much to say here, the problems are presented rather plain. The site started 1998 and published a problem/puzzle every month since then. So there are probably around 200 of them, including solutions.

Google code jam

Google offers problems from past "Code Jams" and graduate tests. If you like the challenge, you can visit their archive for practice.

You can even participate if you are into this kind of challenge.

gowrikumar

This is just a small site, with some C related problems. You might find it interesting.

Mind Cipher

This site provides you with all sort of problems, puzzles and brain teasers. They are not strictly programming related.

Programming Project Ideas in General

Here is another small list of interesting sites that might help you to find projects for learning a programming language or programming in general. When I learned, I had to come up with my own ideas to try out. The problem is usually, that you are not experienced enough to see if you are able to complete the project or not. These sites will not make this easier, but they might help you to find ideas or inspiration.

Other Interesting Links / See Also