Радиоизотопные термоэлектрические генераторы


Адвент кода 2016 День 11

Начинаете год с 11-го дня? Почему?

  • День 25 требует завершения Дня 12 и Дня 23
  • День 23 и День 12 требуют завершения Дня 11.
  • Итак… я начинаю с 11-го дня и попытаюсь решить все четыре дня: 11, 12, 23, 25

Часть 1

  1. Не очень хорошо себя чувствую в этой части
  2. Документирование правил
  3. Одновременно: понимание и замешательство
  4. Краткий алгоритм: регулярное выражение для извлечения элементов каждого этажа
  5. Эксперименты с ходами
  6. Мое первое успешное завершение перемещений!
  7. Кратчайший путь: навсегда неизвестен?

Не очень хорошо себя чувствую

  • Я несколько раз перечитывал инструкции
  • Я не чувствую в себе достаточных навыков, чтобы решить ее алгоритмически.
  • Поэтому, похоже, мне придется попытаться решить ее так же, как я пытался решить 2021 День 23: Амфипод — ручкой и бумагой
  • Я могу попытаться создать симулятор… как способ почувствовать, что я чего-то достиг, и потому что это может быть забавно в использовании

Документирование правил

Из инструкции

Микросхемы могут питаться только от соответствующего РТГ. РТГ, питающий микрочип, по-прежнему опасен для других микрочипов.

  • Где элементом является A: AM работает только в паре с AG.

Если чип когда-либо будет оставлен в одной зоне с другим RTG, и он не подключен к своему RTG, чип будет поджарен. Держите чипы подключенными к соответствующему RTG, когда они находятся в одной комнате, и подальше от других RTG.

  • Если AM находится на том же этаже, что и BG, то и AG должен быть на том же этаже, иначе это недействительный ход.

Лифт может перевозить максимум себя и два RTG или микрочипа в любой комбинации. Лифт будет работать, только если в нем есть хотя бы один RTG или микрочип.

Если на этаже, на котором я нахожусь, есть AM, AG, BM, BG, я могу взять любую из следующих комбинаций:

  • По крайней мере, одну из них
  • не более двух

Из примера

  • Принесите микрочип A на этаж, содержащий только его генератор: верно, потому что он получает питание
  • Принесите пару микрочипов на этаж, содержащий генератор другого типа: действительно, так как микрочип получает энергию, а одинокий генератор не причиняет вреда.
  • Оставить генераторы разных типов на этаже, где нет микрочипов: правомерно, потому что они не причиняют вреда
  • Принести два разных микрочипа на другой этаж, где нет генераторов: действительно, потому что микрочипы не влияют друг на друга, а на этаже нет генераторов (тем более непарных).
  • Принести микрочипы/генераторы на этаж, где есть все совпадающие генераторы/микрочипы: действительно, потому что все получает энергию.

Одновременно: понимание и замешательство

  • Мне кажется, что я понимаю правила.
  • Но я знаю, что в моей головоломке есть несколько пар микрочипов и генераторов.
  • Что делает головоломку гораздо более сложной
  • И, вероятно, потребует еще десятки — возможно, сотни — шагов.

Единственный путь отсюда — симуляция лифта!

Краткий алгоритм: регулярное выражение для извлечения элементов каждого этажа

Первая строка моего входа в головоломку такова:

The first floor contains a polonium generator, a thulium generator, a thulium-compatible microchip, a promethium generator, a ruthenium generator, a ruthenium-compatible microchip, a cobalt generator, and a cobalt-compatible microchip.
Войти в полноэкранный режим Выйти из полноэкранного режима

Исходя из этого, мне нужно программно определить, что на первом этаже находятся следующие предметы:

polonium generator
thulium generator
thulium-compatible microchip
promethium generator
ruthenium generator
ruthenium-compatible microchip
cobalt generator
cobalt-compatible microchip
Войти в полноэкранный режим Выйти из полноэкранного режима

Я заметил вот какой крючок:

  • Каждый предмет предваряется a.
  • Микрочипы имеют суффикс -compatible после имени элемента.

Следовательно, это регулярное выражение:

/a (w+)-?/g
Войти в полноэкранный режим Выйти из полноэкранного режима

Это регулярное выражение создаст такие соответствия:

a polonium
a thulium
a thulium-
a promethium
a ruthenium
a ruthenium-
a cobalt
a cobalt-
Войти в полноэкранный режим Выход из полноэкранного режима

Из этого я могу использовать последний символ в строке для определения типа элемента, а первые символы — для определения элемента.

Мне нужен вложенный массив, подобный этому, для ввода головоломки:

[
  ['PO-G', 'TH-M', 'TH-G', 'PR-G', 
   'RU-G', 'RU-M', 'CO-G', 'CO-M'],
  ['PO-M', 'PR-M'],
  [],
  []
]
Войти в полноэкранный режим Выход из полноэкранного режима

Эксперименты с перемещением

Перемещение двух пар

Перемещение двух пар за меньшее количество шагов

Неудачи

Мое первое успешное завершение перемещений!

Каждая из моих неудачных попыток выявила некоторые интригующие закономерности:

  • Микрочип может попасть на этаж: только в сопровождении своего генератора, только если этаж содержит другую пару микрочип-генератор, только если этаж содержит другие генераторы.
  • Поскольку четвертый этаж накапливает пары, а для перемещения с этого этажа вниз требуется хотя бы один предмет на лифте, похоже, что предмет на лифте должен быть единственным непарным генератором после перемещения парного микрочипа-генератора на четвертый этаж.
  • Генераторы должны быть предметом, наиболее часто используемым для транспортировки микрочипов.
  • Поскольку на первом этаже почти все начинается, а на четвертом все заканчивается, мне придется аккуратно использовать два средних этажа для транспортировки одной пары и одного генератора за раз
  • Должна существовать повторяющаяся серия ходов, которая начинается и заканчивается любым количеством парных микрочипов-генераторов и непарным генератором на четвертом этаже.
  • Затем, в последний ход, непарный генератор используется для получения оставшегося микрочипа.

Я сделал это!

  • Я переместил все с первого на четвертый этаж!
  • Я проверил каждый ход, и все они кажутся верными!

Я подсчитал ходы, отправил ответ, и…

…это не правильный ответ.

Следовательно:

  • Либо есть более короткий путь.
  • либо мой набор ходов недействителен и не является кратчайшим путем.

Облом.

Кратчайший путь: навсегда неизвестен?

  • Я пробовал всевозможные кратчайшие пути, основываясь на своем рабочем решении.
  • Я перечитал инструкции и несколько раз изучил прохождение.

Есть одно правило, которое не дает мне покоя:

Лифт всегда останавливается на каждом этаже для перезарядки, и это занимает достаточно времени, чтобы предметы внутри него и предметы на этом этаже могли облучить друг друга. (Этого можно избежать, если микрочип и его генератор окажутся на одном этаже, так как их можно соединить, пока лифт перезаряжается).

Я не знаю, к какому сценарию это приводит.

Если только это не тот сценарий, который показан в прохождении: два микрочипа соединяются со своими генераторами на другом этаже?

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

Как бы то ни было, я в тупике.

И эта головоломка начинает расстраивать меня больше, чем радовать.

Празднование моих достижений

  • Я обнаружил — с помощью анимации — один верный путь для перемещения всех предметов на четвертый этаж!
  • Я сделал тонну GIF-файлов, которые запечатлели мое исследование головоломки в реальном времени
  • Я написал регулярное выражение, которое могло бы стать началом симулятора.

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

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

Всем, кто это читает:

  • Если вы можете сказать мне, что я упустил, пожалуйста, оставьте комментарий!

Оцените статью
devanswers.ru
Добавить комментарий