grid из цифр от 0 до 9 и прямоугольный шаблон template — список строк, где каждый символ либо цифра, либо строчная латинская буква.
Прямоугольный фрагмент таблицы того же размера, что и шаблон, подходит под шаблон, если:
- там, где в шаблоне цифра, во фрагменте стоит ровно эта цифра;
- каждой букве можно сопоставить цифру так, что везде, где стоит буква, во фрагменте стоит её цифра;
- разным буквам сопоставлены разные цифры.
Цифры шаблона на сопоставление букв не влияют: буква может означать ту же цифру, что записана где-то в шаблоне явно.
Верните [строка, столбец] левого верхнего угла подходящего фрагмента. Если таких несколько, выберите тот, у которого меньше номер строки, а при равенстве — номер столбца. Если подходящего фрагмента нет, верните [-1, -1].grid=[[7, 3, 3], [4, 3, 5], [3, 5, 5]], template=["xy", "yz"] → [1, 0]
Окно с углом (0, 0) — это 7 3 / 4 3: буква y стоит над 3 и над 4, противоречие. Окно с углом (0, 1) — 3 3 / 3 5: x и y обе получают 3, а разные буквы должны означать разные цифры. Окно с углом (1, 0) — 4 3 / 3 5: x = 4, y = 3, z = 5, всё сходится.
grid=[[2, 8, 8], [5, 1, 8]], template=["8", "8"] → [0, 2]
Шаблон из одних цифр требует точного совпадения: столбец 8 / 8 есть только в позиции (0, 2).
grid=[[1, 2, 3]], template=["aa"] → [-1, -1]
Нужны две одинаковые цифры рядом, а их нет.
template одной длины и состоят из цифр и строчных латинских буквgrid=[[7, 3, 3], [4, 3, 5], [3, 5, 5]], template=["xy", "yz"]
[1, 0]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 95 тестов на сервере, включая скрытые.