computability complexity and languages exercise solutions