Bug

`uint8_t board[100]; ...  for (uint8_t i = 1; i < 101; i++) { board[i] = i;  }` attempts to access `board[100]` which is out of the valid 0 - 99 range.

Better as

```
  #define BOARD_SIZE 100
  uint8_t board[BOARD_SIZE];
  ...
  for (size_t i = 0; i < BOARD_SIZE; i++) {
    board[i] = i + 1;
  }
```

[Edit]  
Now I see this point lightly covered by [TrayMan](https://codereview.stackexchange.com/a/293605/29485).  Moving answer to wiki.