README: problems solved in Python 🐍 ===================================== Here I show how I solve some problems that may be used as tests in the recruitment process. I got inspired from `this article `_ on RealPython. .. contents:: Table of contents Dear recruiter... 👨‍💻👩‍💻 ----------------------------- I want to show you: - how I solve problems with Python code (just trust I didn't had a peek at the solution before attempting 😉); - I know how to style and write readable yet efficient and maintainable code; - I know how to use Git and GitHub; - I do have problem-solving skills and I do like solve problems; - I do have analytical skills (by the way, I'm an engineer); - I know how to write documentation with the ReStructuredText syntax (which I think is harder than Markdown, but it makes me obtain wonderful results without using LaTeX); - I know how to use Sphinx and GitHub Actions to automatically build beautiful and professional documentation from docstrings; `here it is `_! - as you read, I speak (or better, I write) English. The problems 🤔 ------------------ Here is a list of all the problems I solved. Each problem is fully contained in a file. .. topic:: Requirements Python 3.8.5 and libraries in ``requirements.txt``, to be installed through ``pip install -r requirements.txt`` (maybe in a virtual environment). ``1_integer_sum.py`` Sum a range of positive integers ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Single function which ingests a number; if it is a positive integer, return the sum of all positive integers from zero to that number included, otherwise returns zero. ``2_caesar.py`` Encrypt or decrypt a string according to Caesar cipher ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Encrypt or decrypt a string by shifting the letters of ``n`` positions in the alphabet; each non-letter character is preserved as it is. Three versions are available, increasingly faster and more readable. ``3_logparse.py`` Parse a log and print a report ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Parse the ``test.log`` file looking for specific strings holding Device status (``ON``, ``OFF`` or ``ERR``); print a report with the total ``ON`` time and the timestamps of ``ERR`` events. ``4_sudoku.py`` Classical Sudoku solver ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Read puzzles from a ``.sdm`` file and reports the solutions, if they can be solved with a unique solution. The solution is checked against the one computed with the ``py-sudoku`` library. At present, the algorithm can solve the easiest soduku. Contributions 🙏 ------------------- Thank you for help me in improving the solutions! If you have a better solution (faster, cleaner, more explicit, anything else), please open an issue or a pull request, I'll be happy to discuss with you. Whole new solutions will be added to the existing ones; the author will be named in the docstring (no money, sorry). Also, if you have any other interesting problem, you're welcome to submit it! License 🔖 ------------- All the material in this repo is available through the `Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license `_.