This challenge is about developing a Tic-tac-toe game, but with some modifications. We'd like the number of tiles (rows and columns) to be possible to specify, as well as how many in a row are required to win.
You may use any programming language you are comfortable with.
Rather than building a user interface (e.g. GUI or CLI) to play the game, we want you to write tests. As well as testing the core logic (that you think is worth testing), your tests should give the reader a good idea of how they would use your code when building a CLI/GUI.
Please structure and test your code as if it was meant for production. Your solution should be well structured and easy to understand. It should be simple to modify your code to accommodate new requirements (Example: could you change the game so that you lose rather than win if you get X in a row?).
See this as an opportunity to show some of your skills. The purpose of this challenge is for us to get a glimpse of your ability to solve problems and build well-structured software that works as intended. If something is unclear to you, feel free to make an assumption and let us know. However, try not to simplify the challenge with assumptions, as the goal is for you to be able to show your skills.
While it should be possible to build a GUI or CLI using your code, you do not need to set up any infrastructure for it (e.g. create a bundle that works in a browser environment). Similarly, while you should structure your code and write tests as if it was for production, do not worry about things like minimizing your code (if you used JS/TS) or tweaking any build settings.
Once you are happy with the code, send it with your application as, for instance, a ZIP or TAR file. Do include a text file briefly explaining your solution, with a focus on how it is structured at a high level. Also, include what was most challenging and how you solved it. Please don’t upload your solution on Github.
If you already have code that is at least as complex as this challenge and you can share, feel free to apply with that instead of doing this challenge. Describe it in short (what it is for and how it is structured at a high-level, and what was most challenging and how you solved it) and include the repository URL if the code is on for instance GitHub.
Good luck and looking forward to your application.
Cheers, The development team at Small Improvements
Careers page: https://www.small-improvements.com/careers/