These problems are not particularly hard. However, coming up with a solution in a short amount of time for them, especially under pressure, is not as easy when you don't have practice. The ideal way I view attempting these problems is in your favourite programming language with a timer ⏳, the goal being to optimize the time spent on solving it as much as possible. I believe doing such problems regularly does improve sharpness and intuition, as well as confidence in stressful situations and builds to an overall better solving experience.
The focus of these problems is to find a fairly simple and efficient algorithm that solves the core problem, and for this reason, implementation details like reading input, storing the input data or the input data type shouldn't be the focus of these problems. (of course, as long as the approaches are reasonable, don't use a string to store a boolean 🤦♂️) Unless specified otherwise, it's fine if the input is hardcoded; what matters is that you can find a good algorithm for the core problem in a short amount of time. For example, if required to write a sorting algorithm, it's fine to go with the simplest setup and use integers and not floats, since the algorithm works for both (or could be easily generalized).
Below you can find a short summary of the proposed problems.
matrix-zigzagrequires to print the elements of a 3x3 matrix in a diagonal patternmedium-of-three-numbersrequires to find the smallest number out of three different numbersrectangle-around-pointsrequires to find the vertices of a rectangle that surrounds some points