Вам слід написати програму або функцію, яка отримує рядок, що описує підлогу як вхід і вихід або повертає область найпростішого мета-плитки, яка могла б створити заданий малюнок підлоги.
Підлога - частина квадратної сітки. Кожна квадратна плитка пофарбована лазурним або чорним кольором (представлена на вході a
та b
на вході).
Приклад поверху:
aaaa
ababab
aaaaa
Металочерепиця
- побудований з
N
поM
прямокутної мета-плитці блакитних і чорних квадратів - використовувані мета-плитки є однаковими до перекладу (їх не можна обертати або дзеркально відображати)
- якщо сторони двох металочерепиць з'єднані, вони повинні з'єднуватися по всій довжині (тобто мета-плитка плиткою простір таким чином, як сітка)
Приклад мета-плитки:
ba
aa
і створена нею мета-плитка:
.
.
.
babababa
aaaaaaaa
... babababa ...
aaaaaaaa
babababa
aaaaaaaa
.
.
.
Цей металочерепиця створює верхній показаний поверх, як показують ліві літери:
.
.
.
********
***aaaa*
... *ababab* ...
*aaaaa**
********
********
.
.
.
Металочерепиця простіша за іншу, якщо площа її металочерепиці менша. У нашому прикладі є площа, 2*2 = 4
яка є найменшою можливою для прикладу. Тож вихід повинен бути 4
для прикладу.
Вхідні дані
- Рядок, що складається з символів
a b space
іnewline
містить принаймні одинa
абоb
. - Букви (
ab
) утворюють одну 4-з'єднану (з'єднану стороною) форму. - На передній частині рядків не буде зайвих пробілів, тобто буде принаймні один ряд, що починається з
a
абоb
. Ви можете вибрати два вхідні формати:
- Немає зайвого пробілу в кінці рядків (як це показано в прикладах).
- Пробіли в правій частині рядків, щоб усі рядки були однакової довжини, як і найдовший ряд.
Новий рядок не є обов'язковим.
Вихідні дані
- Одне ціле число, площа найменшої можливої мета-плитки, плитка якої містить вхідний поверх.
Приклади
Приклади розмежовані тире. Три частини прикладу - це вхід, вихід та одна з можливих найменших мета-плиток.
a
1
a
-----------------
aaaa
aaa
a
1
a
-----------------
aabaab
abaa
aaba
6
aab
aba
-----------------
aabaab
a a a
aabab
18
aabaab
aaaaaa
aababa
-----------------
ba
aaab
8
baaa
aaab
-----------------
aaaa
ababb
aaaa
10
aaaaa
ababb
-----------------
a aa
ab ba
aba
6
aa
ab
ba
-----------------
aaaa
abab
aaaa
4
aa
ab
-----------------
ba
ba
b
4
ba
ab
-----------------
baa
aba
aab
9
baa
aba
aab
-----------------
aaaa
aabaa
aaaa
6
aaa
aab
Це кодовий гольф, тому найкоротший запис виграє.