Текстовый квест "Икебана" в Космических Рейнджерах

На днях решил снова сыграть в такую древнюю игру, как Космические Рейнджеры, и наткнулся там на этот квест.


Напомню, его суть такова: на столе лежат цветки пяти разных цветов, количество цветков каждого цвета не может превышать три. Начальное количество цветков определяется случайным образом. Право ходить первым вы оставляете себе, либо же отдаете его сопернику. Игроки по очереди добавляют цветки какого-то одного цвета, от 1 до 3 штук. Победившим считается тот, чей ход завершит "гармонию Икебаны", то есть доведет ее до состояния 3-3-3-3-3.

Текстовый квест "Икебана" в Космических Рейнджерах Космические рейнджеры, Прохождение, Икебана, Математика, Длиннопост

Тут я задался вопросом: существует ли какая-то беспроигрышная стратегия?

Немного погуглив, я нашел этот совет.

Квест этот весьма сложен и непредсказуем, так что дам только основную стратегию, с которой можно выиграть в большей части случаев. Нужно делать первый ход и этим ходом добиваться, чтобы на поле осталось четное количество чётных чисел. Приведу пример: имеется следующая икебана: красный - 1, жёлтый - 2, зелёный -1, синий - 2, фиолетовый - 0. Чётных чисел здесь 3 - от жёлтого (2), синего (2) и фиолетового (0) цветов. Нужно добавить либо красный, либо зелёный цвет до двух. Далее необходимо повторять действия соперника, то есть если он увеличивает число цветков с 2 до 3, то надо у другого цвета сделать то же самое.

Неплохо, подумал я, но, увы, эта тактика не всегда ведет к победе.

Тогда, поразмыслив, я сделал следующие простейшие наблюдения.


Я побеждаю, если нет {0,1}, а число двоек нечетно. 22222, 22233 - моя победа.

Я побеждаю, если оставлю компьютеру четное число двоек.

Я побеждаю, если единица всего одна и нет нулей. Тогда я смогу оставить компьютеру четное число двоек. 12222 - моя победа.


И так далее... наблюдений было сделано много, но они годились только для поздней стадии игры, а к тому времени компьютер уже успевал поставить меня в проигрышное положение. Для того, чтобы оценить верные/неверные ходы при раскладе 00101 у меня просто не хватало мозгов.


Однако не все так плохо! Сделаем подробный анализ игры. Каждый цвет может принимать значения от 0 до 3. Потратив полчаса в Excel'е, можно с уверенностью сказать, что количество всех возможных комбинаций составляет 55 (за вычетом дубликатов и комбинации 33333).


Неплохо! Едем дальше. Выпишем все возможные состояния на диаграмму и упорядочим их по сумме всех цифр (макс. 14).

Текстовый квест "Икебана" в Космических Рейнджерах Космические рейнджеры, Прохождение, Икебана, Математика, Длиннопост

Теперь начнем окрашивать в зеленый те комбинации, которые однозначно принесут нам победу, а в синий - те, которые однозначно принесут компьютеру поражение!

23333 - зеленый

22333 - синий

Текстовый квест "Икебана" в Космических Рейнджерах Космические рейнджеры, Прохождение, Икебана, Математика, Длиннопост

Окрасим в зеленый те блоки, которыми можно загнать компьютера на синие.

Например, из 02333 можно получить 22333. И компьютер терпит поражение.


Окрасим в синий те блоки, из которых НИКАК нельзя прийти в другие синие блоки.

Из них можно получить только зеленые блоки, которые ведут к нашей победе =)

Текстовый квест "Икебана" в Космических Рейнджерах Космические рейнджеры, Прохождение, Икебана, Математика, Длиннопост

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

P.S. Получить быстрый доступ ко всем квестам можно, нажав в главном меню q.

P.S.S. Сделано на сайте draw.io

Текстовый квест "Икебана" в Космических Рейнджерах Космические рейнджеры, Прохождение, Икебана, Математика, Длиннопост

UPD Математическое обоснование #comment_136426712

Вы смотрите срез комментариев. Показать все
3
Автор поста оценил этот комментарий

Опишу еще проще.
Если начинать с нуля (00000)
Даешь ход противнику.
Ставит единицу на какой-нибудь цвет - ставишь 1 туда же, если невозможно - ставишь тройку на любйо другой цвет
Ставит двойку на какой-нибудь цвет - ставишь двойку на любой другой цвет, если невозможно - ставишь тройку на любой другой цвет.
Ставит тройку на любой цвет - ставишь тройку на любой другой цвет

Три строчки if-then-else, и никаких деревьев не нужно=)

раскрыть ветку (58)
4
Автор поста оценил этот комментарий

Ладно, уговорил =) Ты дал мне ход, я хожу 03000

Твоя очередь =)

Посмотрим, как твоя логика потерпит крах =)

раскрыть ветку (57)
Автор поста оценил этот комментарий

33000

раскрыть ветку (56)
3
Автор поста оценил этот комментарий

33030

Напоминаю правила: выигрывает тот, кто соберет 33333

раскрыть ветку (55)
1
Автор поста оценил этот комментарий

Так, что-то я напутал=) признаю, не прав.
Но тогда все еще проще.
Нужно ходить первым и каждым ходом заканчивать цвет.
Кстати, не помню, там всегда начиналось с 00000 или были разные варианты?

раскрыть ветку (54)
1
Автор поста оценил этот комментарий

Случайно. Могло начаться 01021. Или 00100.

"Нужно ходить первым и каждым ходом заканчивать цвет."

Эти правила тоже не дают 100% победы.

Сыграем еще?

01112, твой ход.

раскрыть ветку (53)
Автор поста оценил этот комментарий

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

Ну, допустим, 01113

раскрыть ветку (52)
Автор поста оценил этот комментарий

11113

раскрыть ветку (51)
Автор поста оценил этот комментарий

Тут уже проигрыш

раскрыть ветку (50)
Автор поста оценил этот комментарий

Хорошо, давай сделаем так - называй начальную комбинацию и решай кому ходить. Поиграем =)

раскрыть ветку (2)
Автор поста оценил этот комментарий

10000
ходи=)

раскрыть ветку (1)
Автор поста оценил этот комментарий

В смысле твой проигрыш?

раскрыть ветку (46)
Автор поста оценил этот комментарий

В общем вот другой алгоритм.
Сначала считаешь максимальное количество ходов до завершения икебаны.

Если оно четное - даешь ходить противнику.

Если нечетное - ходишь сам.

И каждым ходом добиваешь сумму твоих цветков и цветков противника до четного числа.

раскрыть ветку (43)
Автор поста оценил этот комментарий

да=)
Давай по-другому. ТЫ даешь любую комбинацию, а я выбираю, кто будет первым ходить=)

раскрыть ветку (1)
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку