Разбор чередование крестика и нолика

В данном уроке я хочу показать вам, как сделать чередование крестика и нолика в одну строчку. Вы скорее всего, сделали что-то такое:

javascriptfunction start(cells) {
  let i = 0; // начальное значение счетчика
  
  for (let cell of cells) {
    cell.addEventListener('click', function() {
      if (i % 2 == 0) {
        this.textContent = 'X';
      } else {
        this.textContent = '0';
      }
      
      i++; // увеличиваем счетчик
    });
  }
}

Я предложу решить задачу короче. Сделаем массив наших 'игроков':

javascriptlet gamers = ['X', 'O'];

Как вы видите, в этом массиве крестик имеет ключ 0, а нолик - ключ 1. To же самое можно сказать и про i % 2 - для крестика остаток будет 0, а для нолика - 1.

To есть эту штуку можно использовать вместо ключа:

javascriptlet gamers = ['X', 'O'];
let key = i % 2;

console.log(gamers[key]);

Или еще короче:

javascriptlet gamers = ['X', 'O'];
console.log(gamers[i % 2]);

Или еще короче:

javascriptconsole.log(['X', 'O'][i % 2]);

Упростим теперь код нашей функции start:

javascriptfunction start(cells) {
  let i = 0;
  
  for (let cell of cells) {
    cell.addEventListener('click', function() {
      this.textContent = ['X', 'O'][i % 2];
      i++;
    });
  }
}
Задание 1

Самостоятельно, не подсматривая в мой код, внесите описанную правку.

Задание 2

Сейчас на любую ячейку можно делать неограниченное количество кликов, меняя, например, крестик на нолик. Исправьте это.