my solution for sicp problems