This is a technical task I had to do during an interview for the position of Lead Game Programmer at Karta.game.
I didn't get get job and here is the feedback I got: "Candidates ' approach to solving the problem was unique, however the codebase was rather rigid in its design, which would have made future features difficult to implement. Also, the codebase could have been separated into different modules based on more thought-out categories, as most of the code occupied 2 module scripts."
So apparently it's wrong to have the task in two scripts (Controller and Service scripts) and it was wrong to have there some constants (e.g. fixed board rows/cols).