TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Where to find programming challenges for sharpening algorithmic skills?

20 pointsby Fa773NM0nKalmost 12 years ago
I am looking for a set of programming challenges that&#x27;ll help sharpen my algorithmic skills.<p>I&#x27;ve worked a bit with CodeChef and SPOJ. Both have problems that test problem solving abilities of varied nature.<p>However, I am unable to decide which one to follow through with. So I decided to ask the community.<p>What resources would you suggest for improving my thinking&#x2F;algorithmic skills? Something, that&#x27;ll have problems spanning all the fundamental concepts.<p>I am a student of Computer Science Engineering, and I&#x27;m not new to programming or algorithms; though I&#x27;m a far cry from being an expert.<p>I had tried my hand at Project Euler too, but you can get through those problems with sub-optimal solutions. For eg. the first problem&#x27;s solution can be arrived by at by using an O(1) algorithm, but the system would accept a solution generated using an O(n) algorithm too. That wouldn&#x27;t motivate deep thinking. (http:&#x2F;&#x2F;projecteuler.net&#x2F;problem=1)

11 comments

tim_huttonalmost 12 years ago
Keep going with Project Euler. It&#x27;s not long before the brute force approach stops working. On later problems you will find many ways to solve them but very few that return an answer in less than a week, say.
bjournealmost 12 years ago
Add solutions to problems at <a href="http://rosettacode.org" rel="nofollow">http:&#x2F;&#x2F;rosettacode.org</a>. Even if your solution is suboptimal, someone is likely to come along and improve it. Or create a totally new problem and solve it in your language of choice.
WizzleKakealmost 12 years ago
I can recommend Rosalind <a href="http://rosalind.info/problems/locations/" rel="nofollow">http:&#x2F;&#x2F;rosalind.info&#x2F;problems&#x2F;locations&#x2F;</a><p>It has bioinformatics problems. They start really easy (&quot;count the bases in a DNA sequence&quot;) and get progressively harder.<p>For each problem you get some sample data to work with. When you think you&#x27;ve figured it out, you can download a dataset to run your algorithm against, then upload the output to see if you are correct. There&#x27;s a time limit for submission, and although you can keep re-trying, the data sets are different each time.<p>Check it out! Don&#x27;t let the bioinformatics part throw you off.
tujvalmost 12 years ago
I highly recommend the book &quot;Programming Challenges&quot; by Steven Skiena, used in conjunction with UVA Online Judge at <a href="http://onlinejudge.org" rel="nofollow">http:&#x2F;&#x2F;onlinejudge.org</a>.<p>Each challenge takes the form of a word problem. The solution can be coded in a few different languages and uploaded to the website.<p>The site imposes time limits when running the solution. When I&#x27;ve found that my solution works but is too slow, it has encouraged me to look for different data structures or algorithms.<p>I can&#x27;t recommend it enough.
pochaalmost 12 years ago
Have you tried www.hackerrank.com ? I have not personally used it. Also, I am not a big fan of algorithmic problems either.
评论 #6210670 未加载
S4Malmost 12 years ago
Someone on HN posted the Martyr2&#x27;s mega project list: <a href="https://github.com/thekarangoel/Projects" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;thekarangoel&#x2F;Projects</a><p>You could take some inspiration from it.
linux_devilalmost 12 years ago
Both codechef and SPOJ are good enough , focusing on one will be a good strategy. You may give a try to interviewstreet as well. But like I said mastering problems on any one of the sites is sufficient .
dagwalmost 12 years ago
You can only brute force the first handful of Project Euler problems. You quickly hit problems where the difference between the right and wrong approach is seconds vs hours or days.
yulaowalmost 12 years ago
Also <a href="http://www.reddit.com/r/dailyprogrammer/" rel="nofollow">http:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;dailyprogrammer&#x2F;</a>
brudgersalmost 12 years ago
<i>The Art of Computer Programming</i>, Knuth.
vishalzone2002almost 12 years ago
topcoder.com