Припустимо, ця сітка пробілів і Xs представляє поперечний переріз якихось дивовижних порожніх кубиків льоду :
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
Виклик
Напишіть програму або функцію, яка займає прямокутну сітку пробілів, Xs та 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