Глава 2. Реализация в Эксель
2.1. Минимум автоматизации
При решении задачи о восьми ферзях в Эксель можно начать с того, что использовать Эксель просто как холст, как тетрадку, используя минимум из всех возможностей Эксель.
Вначале создадим нужный файл, который будет отвечать за решение этой задачи. Это должен быть не простой файл, а файл с поддержкой макросов. Это значит, что у этого файла будет расширение: «xlsm». Перед расширением можно задать имя: «Восемь_ферзей».
Далее можно изменить ширину столбцов. Рекомендуемая ширина — около 2,6 условных единиц. Это необходимо сделать для того, чтобы каждая клетка Эксель была больше похожа на квадрат, чем на простой прямоугольник. Ведь каждая ячейка Эксель будет символизировать клетку шахматной доски, а клетка доски — это именно квадрат.
Итак, начнем с составления первого варианта решения задачи.
Выделим квадрат размером 8 на 8 клеток Эксель. Этот квадрат будет символизировать шахматную доску (рисунок 2.1).
Рисунок 2.1.
Мы добавили внешние границы квадрату, который символизирует шахматную доску. Ячейка A1 Эксель (левая верхняя ячейка рисунка) будет означать поле a8 шахматной доски (тоже левое верхнее поле).
Теперь можно начать составлять возможные позиции, при которых на доске будет находиться 8 ферзей, не угрожающих друг другу.
Начнем с того, что предположим, что в первой позиции в верхней строке ферзь будет в первом (левом) столбце. Допустим, что цифра 1 будет символизировать ферзя, а какой-то символ (например, буква «х» будет означать те клетки, в которых ферзя точно не может быть.
Покажем эту ситуацию на рисунке 2.2.
Рисунок 2.2.
Далее продолжим заполнять наш квадрат единицами. Следующая строка — вторая строка сверху. Ячейки A2 и B2 Эксель не могут содержать единицу, так как там уже находятся символы «х». Это значит, что самый первый столбец, где можно предполагать наличие единицы в строке 2 Эксель, — это столбец C Эксель, ячейка C2. Поставим там единицу, а также добавим символы «х» везде, где это необходимо. Покажем ситуацию на рисунке 2.3.
Рисунок 2.3.
Затем заполняем строку 3. Здесь первые 4 ячейки уже заняты. Ближайшее свободное место, где можно разместить единицу, — это ячейка E3 Эксель. Поместим туда единицу, а также добавим символы «х» везде, где это будет необходимо. Покажем результат на рисунке 2.4.
Рисунок 2.4.
Затем надо заполнить строку 4 Эксель.
Но здесь можно просто применить логику. В строке 4 пока всего 3 свободные клетки. Но если мы поместим единицу в ячейку B4 или H4, то это будет значить, что для столбцов F и G не осталось ни одного варианта, которые позволили бы разместить в этих столбцах два ферзя, поскольку эти варианты не оставляют две свободные клетки в этих столбцах так, чтобы в этих клетках можно было разместить 2 ферзя, не угрожающих друг другу.
Но и в ячейке G4 тоже нельзя разместить единицу, поскольку в этом случае без вариантов останется столбец H. Напомню, что правильное решение задачи предполагает, что в каждом столбце должен быть ровно один ферзь (поскольку ферзей 8, и столбцов на доске тоже 8), поэтому ошибкой можно считать не только наличие двух и более ферзей в одном столбце, но и создание ситуации, при которой в каком-то столбце нет ферзя, но при этом нет возможности его там разместить, поскольку все ячейки одного столбца уже «простреливаются» другими ферзями.
Следовательно, можно прийти к выводу: в ситуации, изображенной на рисунке 2.3, в ячейке E3 размещать единицу нельзя, можно попробовать другие варианты. Начнем с варианта, когда единица будет в ячейке F3 (рисунок 2.5).