Основы программирования с Java. Тимур Машнин

Чтение книги онлайн.

Читать онлайн книгу Основы программирования с Java - Тимур Машнин страница 11

Основы программирования с Java - Тимур Машнин

Скачать книгу

ячейкам на сторонах в среднем слое, червь также может перейти к средней ячейке на переднем плане и средней ячейке на заднем плане.

      И теперь вопрос в том, может ли червь по-прежнему съесть все 27 яблок.

      Помните, что червь не может вернуться к любым тем ячейкам, которые были захвачены ранее.

      Давайте теперь вернемся и посмотрим на 2D-задачу немного по-другому. Некоторые из красных яблок заменены на зеленые яблоки, и они расположены по такой схеме.

      Если червь опять должен начать с середины, следуя тем же правилам, это та же задача, как и раньше, независимо от цвета яблок, и у нас есть те же 8 решений, как и в предыдущем случае 2D.

      Теперь рассмотрим, что, если вместо того, чтобы начать с середины, червь начинает с одной из ячеек на стороне, а все другие правила те же самые.

      Подсказка в том, что надо посмотреть, как меняется цвет, когда червь переходит из одного яблока в другое.

      Давайте теперь вернемся к задаче квадратных яблок 3D и будем чередовать цвета яблок, как мы сделали это в 2D случае.

      Как и в предыдущем 3D случае червь прячется в середине.

      Так что это все та же 3D задача, как и раньше, хотя цвета некоторых из яблок были изменены.

      Теперь используйте то, что вы наблюдали в случае 2D, и попытайтесь придумать быстрое решение этой задачи.

      Вопросы

      Задача

      Может ли червь съесть все 27 яблок, если он начинает от центра куба?

      1.      Да

      2.      Нет

      Ответ: 2.

      Задача

      Может ли червь съесть все 27 яблок, если он начинается с одного из углов куба?

      1.      Да

      2.      Нет

      Ответ: 1.

      Из задачи 2D квадратных яблок, мы можем наблюдать, что червь сможет съесть все яблоки, если он начинает с ячейки с красным яблоком. Применяя то же правило в задаче квадратных яблок 3D, мы можем быстро сказать, что червь не сможет съесть все яблоки, если он начинает из центра куба, в котором содержится зеленое яблоко. Аналогичным образом можно быстро сказать, что червь может съесть все яблоки, если он начинает с угла куба, который содержит красное яблоко.

      Важность представления задачи

      В задаче 2D квадратных яблок, используя красное и зеленое представления яблок, вы увидите, что есть 5 красных яблок и 4 зеленых яблока.

      Каждое движение будет чередовать яблоки разных цветов.

      Если начинать с зеленого яблока, тогда не будет больше зеленого яблока после употребления четвертого красного яблока.

      В 3D случае, существует 14 красных яблок и 13 зеленых яблок.

      Используя те же рассуждения, что и в случае 2D, если начинать с зеленого яблока, тогда не будет больше зеленого яблока после окончания 13-го красного яблока.

      Так что решения этой задачи не будет, если червь начинает со средней ячейки, которая содержит зеленое яблоко.

      И нам удается сразу найти решение, без необходимости

Скачать книгу