Challenging algorithms and data structures every programmer should try | Hacker News