i am an electrical engineer and trying to make a transition into machine learning. I read in multiple articles that i have to learn data structures and algorithms, before this i have to learn about mathematical proofs. I started studying it on my own using the material available on mit's ocw, while i did grasp the concepts of induction and well ordering etc.. I've been struggling with the exercises for a very long time and it's really frustrating. I can easily deal with any type of proofs that i saw before ( eg. once i saw the proof of a recurrence question i became pretty good at prooving them). My problems start when i face an unusual question. I feel like i am memorizing the proofs rather than learn how to prove. is there any way ( or any resources) that can improve my proving skills ? in a way that whenever i see an unusual question ( like the checkers tiles and chess tiles type of questions) i dont have to stare at them for 2 hours before giving up