A neural network solves, explains, and generates university math problems by program synthesis and few-shot learning at human level