Вызов
Учитывая прямоугольную сетку печатаемых символов ascii в виде строки или через стандартный ввод, напишите функцию или программу, которая сворачивает непробельные символы в стопку внизу.
Правила:
- Вывод имеет те же размеры и символы, что и ввод.
- Не-символ пробела при
(row a,column b)
не может иметь пробел' '
на(a-1, b)
,(a-1,b-1)
или(a-1,b+1)
, где строки пронумерованы по сравнению с самой нижней. Это приводит к тому, что все вертикальные сваи должны разрушаться вбок. - Символ без пробела может перемещаться в большинстве
(initial height - final height)
мест слева или справа (см. Рис. 1). - Вы можете предположить, что на изображении достаточно места, чтобы свернуть его без выпадения символов с экрана.
Рисунок 1: возможные конечные местоположения для символов @#$
показаны x,y,z
соответственно.
..............
...@..........
..xxx.........
.xxxxx...#....
xxxxxxx.yyy.$.
Порядок, в котором персонажи разрушаются, можно выбирать свободно. Конечные пробелы не в порядке, но конечные переводы строки.
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах!
пример
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
..."Have you mooed today?"...
Один из возможных выходов:
--(_
/----|/|(o_)
/|/~\---~\\/o)
..."Have*you~mooed~today?"...