add tests and solution for problem 46; split up tests and problems into smaller subsets (mirroring the organization of the 99 Problems project webpages)