Припустимо, ця сітка пробілів і X
s представляє поперечний переріз якихось дивовижних порожніх кубиків льоду :
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Стовпці без X
'являють собою отвори або проміжки в лотках, які не можуть утримувати воду, стікаючи в раковину безмежної ємності. Вода, що падає на крайній лівий або правий край сітки, потрапляє і в цю нескінченну раковину.
Якби ми розміщували кран над лотками і давали їм наповнюватись водою до тих пір, поки рівень води у всіх відділеннях не залишиться стабільним, точні відсіки, які заповнюються, залежатимуть від того, де саме розташувався потік води над лотками. (Припустимо, тоненький постійний потік води без бризок.)
Наприклад, якщо наш змішувач F
знаходився над самою лівою колоною сітки
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
вода впала б у X
верхню частину цього стовпчика і поширилася ліворуч і праворуч, ліва половина розлилася в раковину внизу, а права половина заповнила відділення 2 × 1. Після того, як відсік заповниться, правій половині водного потоку нікуди не стікає, а в раковину, і рівень води скрізь є по суті стабільним.
Відключивши кран, лоток тепер виглядає так: (з ~
водою)
X X X
X~~X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Аналогічно, якщо ми розмістимо змішувач так:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Він заповнить два крайні ліві відсіки, але решта води буде стікати:
X X X
X~~X~X XX X XX X
XXXXXX XXXXXXXXXXXXX
Якщо ми розмістимо змішувач так:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Ліва половина потоку буде надходити в раковину, але права половина врешті заповнить три найправіші відсіки, оскільки немає обмеження в тому, наскільки вода може ходити по горизонталі на рівній поверхні:
X X~X
X X X XX~X~~XX~~~X
XXXXXX XXXXXXXXXXXXX
Однак розташований так:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Вся вода стікає і жодні відсіки не заповнюються:
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Виклик
Напишіть програму або функцію, яка займає прямокутну сітку пробілів, X
s та one F
. У верхньому рядку завжди буде F
розміщено пробіли, а в іншому випадку - лише пробіли. У X
«s в кожному стовпці (якщо такий є) буде проходити у вигляді суцільної лінії вгору від підстави решітки, тобто не будуть ніяких печер або звисів.
Роздрукуйте або поверніть сітку після того, як змішувач F
заповнив воду, ~
як описано вище. Залиште верхній F
ряд із виводу.
Сітка крім ряду змішувача буде, як мінімум, 1 × 1
F X
- це найменший вхід, який потрібно підтримати.
Вхід вийде як повноцінний текстовий прямокутник. Провідні та кінцеві простори мають значення у вході та виході. наприклад вхід
F X X XXXX
має призвести до
X~~X XXXX
(зверніть увагу на провідні та кінцеві місця)
Добре мати єдиний трейлінг нового рядка на вході чи виході.
Ви можете використовувати будь-які чотири різних друкуються ASCII символів замість простору
X
,F
,~
.
Виграє найкоротший код у байтах.
Великий приклад:
Вхід:
F
X X
X X X
X XXX X X X X X
X X XXXXXXX X XXX XXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX
Вихід:
X~~~~~~~~~~~~~X
X~~~~~~~~~~~~~X~X
X~~~~~~~~~~~~XXX~~~~~~~X~~~~X~X~~~~~~~~~~~X X
X~~~X~~~~~XXXXXXX~~~~~~X~~~~XXX~~~~~XXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX
zip()
<3