What are a graph books with problems that commonly appear in programming contests, the algorithms to solve them, and the practical implementations of these algorithms? In 2016, what are the best books to learn Ruby?