These were the first challenges I did when I started learning Solidity. Since solidity is the first language I have tried to learn extensively, I can say that it is useful both for my familiarity with syntax and for the development of my basic algorithm skills. It gives you the basic skills necessary to write a smart contract. It was nice to use loops, structs, arrays multiple times and in different ways.
https://codedamn.com/challenge/solidity-thirty/week-1/solidity-basics.uOrqgn_3FH_pcVjyQsXK5