Solving Algorithmic Puzzles from Programming Challenges.