solving programming puzzles