Final version:
- occupied lines optimization (diagonals and straights check for O(1) time)
- unique check optimization
- reduced number of all possible check combinations