Ctrl K

Пирамида из цветных блоков

Средняя
Строим пирамиду из блоков, цвет каждого — заглавная латинская буква. Каждый следующий ряд на один блок короче предыдущего, и каждый его блок стоит ровно на двух соседних блоках нижнего ряда. Сочетания цветов ограничены списком шаблонов patterns. Шаблон — строка из трёх букв: первые две — левый и правый нижние блоки, третья — блок, который разрешено поставить на них сверху. Например, "ABC" позволяет поставить C на пару (A слева, B справа), но не на пару (B слева, A справа). Нижний ряд задан строкой base. Верните True, если пирамиду можно достроить до одного верхнего блока так, чтобы каждая тройка «два снизу и один сверху» была в patterns, иначе False.
Пример 1
base="ACE", patterns=["ACB", "CED", "BDF"] → True

Над парой AC ставим B, над CE — D, получаем ряд BD. Над BD ставим F — пирамида достроена.

Пример 2
base="ABA", patterns=["ABC", "BAD", "DCE"] → False

Второй ряд получается только CD, а для пары CD правила нет (есть лишь DC — порядок важен). Достроить нельзя.

Пример 3
base="FF", patterns=[] → False
Ограничения
  • 2 ≤ len(base) ≤ 6
  • 0 ≤ len(patterns) ≤ 216
  • Каждый шаблон — строка длины 3 (шаблоны могут повторяться)
  • Все буквы — заглавные латинские
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПульт с четырьмя кнопками СредняяОсушение замкнутых прудов СредняяДерево глазами наблюдателя справа СредняяУчастки суши на карте СредняяПорядок сборки модулей Средняя
загружаем Python…
Вход
base="ACE", patterns=["ACB", "CED", "BDF"]
Ожидается
True

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 71 тест на сервере, включая скрытые.