self solutions for sicp exercises