Как вы, скорее всего, сейчас знаете, существует 2339 решений головоломки пентомино в сетке 6х10. Существуют разные схемы маркировки для 12 пентомино, две из них показаны на рисунке ниже:
Изображение предоставлено: Википедия
Для целей текущей задачи мы скажем, что нормализованное решение пентомино является решением, использующим вторую схему маркировки (по Конвею).
Пример:
O O O O O S S S Z Z
P P R R S S W W Z V
P P P R R W W Z Z V
U U X R T W Y V V V
U X X X T Y Y Y Y Q
U U X T T T Q Q Q Q
Кусок с 5 квадратами в ряд обозначен буквами O
, согласно схеме. То же самое верно для всех частей.
Задача:
Учитывая решение пентомино 6x10, в котором кусочки помечены случайным слоем, нормализуйте его так, чтобы все кусочки были помечены в схеме маркировки Конвея. Вы должны распознать фигуры и пометить каждый квадрат конкретной фигуры символом фигуры.
Входные данные:
Решение должно быть нормализовано, в любом удобном для вас формате, например:
Многострочная строка
Список строк
Список списков персонажей
и так далее
Выход:
То же решение (все положения и ориентация кусков сохранены), но каждый кусочек помечен в соответствии со схемой маркировки Конвея. Примечание: выходные данные ДОЛЖНЫ быть напечатаны в виде сетки символов 6x10. Передние и конечные переводы строки и пробелы разрешены. Вы также можете напечатать пробел между символами (но не пустые строки), как в примере выше.
Тестовые случаи:
1. Вход:
6623338888
6222344478
66A234BB70
1AAA94B770
11A99BB700
1199555550
Выход:
UURTTTQQQQ
URRRTVVVSQ
UUXRTVZZSY
PXXXWVZSSY
PPXWWZZSYY
PPWWOOOOOY
2. Вход:
45ookkkk00
455ooogk00
4a55gggdd0
4aaa3gnnd.
4am333ndd.
mmmm3nn...
Выход:
OWSSQQQQPP
OWWSSSRQPP
OTWWRRRUUP
OTTTXRZZUV
OTYXXXZUUV
YYYYXZZVVV
Критерии победы:
Самое короткое решение в байтах на каждом языке выигрывает. Не разочаровывайтесь языками игры в гольф. Пояснения к алгоритмам и реализациям приветствуются.