exercises from Learn to Program