Programming polymers to remember complex, reversible shapes