solutions for sicp problems