Вы не хотите платить деньги за дорогую архитектурную программу, поэтому вы решаете сделать свою собственную. Вы решили использовать ASCII для проектирования своих зданий. Ваша программа будет принимать одну строку, отформатированную определенным образом, и программа выведет здание.
вход
Ввод состоит из одной строки символов. Можно предположить, что он содержит только буквы a-j, цифры 1-9и символы -и +.
Описание выхода
Для каждой буквы a-jпрограмма выведет вертикальную линию следующим образом. Мы будем называть это столбцом.
.
..
...
****
*****
******
-------
--------
+++++++++
++++++++++
abcdefghij
Например, ввод abcdefgfedefghgfedcбудет выводить:
.
* ***
*** *****
***** *******
---------------
-----------------
++++++++++++++++++
+++++++++++++++++++
Букве может предшествовать положительное целое число n, которое будет добавлять nпробельные символы ниже столбца. Мы будем называть это смещением. Например, используя Sдля обозначения пробелов, ввод 3b2b3bбудет выводить:
+ +
+++
S+S
SSS
SSS
Букве также может предшествовать отрицательное целое число -m, которое удалит нижние m непробельные символы столбца (не заменяйте их пробельными, удалите их полностью). Мы назовем это ломтиком. Например, ввод -1j-2j-3j-4j-5j-6j-7j-8jбудет выводить:
.
..
...
*...
**...
***...
-***...
--***...
+--***..
Смещение и срез могут быть применены к одной и той же строке, но смещение должно идти первым. Другими словами, перед буквой может стоять префикс n-m, где nразмер смещения и mразмер среза. Например, используя Sдля обозначения пробелов, ввод '2-4j' будет выводить:
.
.
.
*
*
*
S
S
И наконец, +оператор, используемый между двумя столбцами, указывает, что они должны располагаться друг над другом в одном столбце, а не в отдельных столбцах. Например, входные данные `2-4ja 'выводят:
.
.
.
*
*
*
S
S+
Принимая во внимание, что входные 2-4j+aвыходы:
+
.
.
.
*
*
*
S
S
Вот пример ввода:
abiehef+ehfhabc
И результирующий вывод:
*
-
. -
. . +. .
* * +* *
* * ****
********
--------
-------- -
+++++++++ ++
+++++++++++++
Похоже на старую разрушенную замковую башню.
Вот еще один пример ввода:
6b5b+a6b1-2d+3-4f1-2d+-2c+2-4f+1-2d+-2c2-2d+1-4g+1-2c+b+-2c+-4e2-7j+-4g+d+-2c+-4f2-7j+-5h+b+-2c+a+-3f2-7j+-7i+-4e+b+b+a+-4f2-7i+a+-7h+-4f+b+b+a+-4f2-7j+-7h+-4f+a+-7h+a+-7i+-4f2-7j+-7i+-6h+a+-7i+b+-4e3-7i+a+-7h+-4e+a+-7h+b+1-7h3-7j+1-4f+-7h+b+-4f+a3-7j+2-4f+a+-4f+b3-2d+-2d+3-4g+b3-2d+-2d+-2c
И результирующий вывод:
****** +++
******+.*++
---++.+ ***
-+-+++..++**
-+--+++.+++*
--++++.+..*
+++++.+**
+++****.****** -
+++*****.**.. --
+ ***....+..--
...+.....--
--.........--
---......
--
(Это должен был быть Марио, но получилось не очень хорошо ...)
Если спецификация все еще не ясна, у меня есть реализация без игры в гольф, написанная на Python 2.7. Вы можете запустить его и поэкспериментировать, чтобы понять, как работает спецификация. Вы также можете посмеяться над моими навыками программирования.
Это код-гольф, поэтому выигрывает самый короткий вход. Задавайте вопросы в комментариях, если неясно.
a+a+a+a+aбы пять знаков плюс друг на друга.
