Notes about HackerRank.
What is HackerRank?
HackerRank is a learning site where you can learn programming by solving problems. While most of these sites specialize in either web development or competitive programming, HackerRank covers both competitive programming problems and learning the programming language itself. It is a bit broader than only competitive programming.
AtCoder, for example, emphasizes real-time competition, while HackerRank focuses on asynchronous learning.
The purpose of this article is to report the results of solving the problems every day for about three months.
What you can learn
- Algorithms
Competitive programming problems
- Data Structures
Re-implementing data structures
- Mathematics
Competitive programming problems
- C
- C++
- Java
- Python
Ruby
Linux Shell
bash
- Functional Programming
You can choose any functional language such as Lisp, Clojure, etc.
- Artificial Intelligence
Game logic implementation
SQL
Databases
set operations, etc.
- Regex
Regular Expressions
Apart from these categories, there is also 30 Days of Code, which is a jumble of 30 questions to be solved first.
Good points
Moderate length of time.
I sometimes take about an hour to solve a difficult competitive programming problem.
Most of the easy problems at HackerRank take only about 15 minutes. So it's easy to achieve the "Write Code Every Day" goal.
Recommendations.
You will receive an email about the recommendation of problem based on the result you have solved so far. Good for weak-willed people.
Explanations included.
HackerRank gives you points by solving problems, and you get a badge by collecting points. Basically, this motivates you to learn.
However, sometimes you may encounter a really difficult problem. You can read Editorial in that case. Since reading discussions is not a negative factor for points, I recommend to read other people's stuck stories first.
Bad points
Problem text with old language ver assumptions.
The language execution environment seems to be newer, but sometimes the problem statement was Python 2 series or Ruby 1 series. If it is easy to convert, just describe the problem by newer version is better.
Difficulty level variations.
Numerous difficult language specification problems are included in the easy problems. I think the percentage of correct answers increases by mistake when the threshold is high because no one submits an answer.
Support Level Differences between languages.
As mentioned above, solving Ruby, Python, C++, etc. problems give you a badge. However solving Algorithms in a minor language does not seem to give you points or badges.
I prefer learning new language than traditional C++, Java. I wish there was more support for newer languages.
Impression
I enjoy the fact that HackerRank is easy and I can make some progress every day. On the other hand, there is little sense of contribution to the world. If that's a problem, sending pull requests to open source projects is one of better options.
Future Work
- LeetCode