Você não deseja pagar pelo caro programa de arquitetura, por isso decide criar o seu próprio. Você decide usar o ASCII para projetar seus edifícios. Seu programa terá uma única sequência de caracteres formatada de uma maneira específica e o programa produzirá o edifício.
Entrada
A entrada consiste em uma única linha de caracteres. Supõe-se que ele contenha apenas as letras a-j, os números 1-9e os símbolos -e +.
Descrição da saída
Para cada letra a-j, o programa exibirá uma linha vertical da seguinte maneira. Vamos chamar isso de coluna.
.
..
...
****
*****
******
-------
--------
+++++++++
++++++++++
abcdefghij
Por exemplo, a entrada abcdefgfedefghgfedcproduziria:
.
* ***
*** *****
***** *******
---------------
-----------------
++++++++++++++++++
+++++++++++++++++++
Uma letra pode ser prefixada com um número inteiro positivo n, que adicionará ncaracteres de espaço em branco abaixo da coluna. Nós chamaremos isso de deslocamento. Por exemplo, usando Spara notar um espaço em branco, a entrada 3b2b3bproduziria:
+ +
+++
S+S
SSS
SSS
Uma letra também pode ser prefixada com um número inteiro negativo-m , que removerá os caracteres de m espaço não em branco da coluna (não os substitua por espaços em branco, remova-os completamente). Vamos chamar isso de fatia. Por exemplo, a entrada -1j-2j-3j-4j-5j-6j-7j-8jproduziria:
.
..
...
*...
**...
***...
-***...
--***...
+--***..
Um deslocamento e uma fatia podem ser aplicados à mesma linha, mas o deslocamento deve ir primeiro. Em outras palavras, a letra pode ser prefixada com n-m, onde né o tamanho do deslocamento e mo tamanho da fatia. Por exemplo, usando Spara notar um espaço em branco, a entrada '2-4j' produziria:
.
.
.
*
*
*
S
S
Por fim, o +operador usado entre duas colunas indica que eles devem ser empilhados um sobre o outro na mesma coluna, em vez de em colunas separadas. Por exemplo, a entrada `2-4ja 'gera:
.
.
.
*
*
*
S
S+
Considerando que as 2-4j+asaídas de entrada :
+
.
.
.
*
*
*
S
S
Aqui está uma entrada de amostra:
abiehef+ehfhabc
E a saída resultante:
*
-
. -
. . +. .
* * +* *
* * ****
********
--------
-------- -
+++++++++ ++
+++++++++++++
Parece uma velha torre de castelo destruída de algum tipo.
Aqui está outra entrada de amostra:
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
E a saída resultante:
****** +++
******+.*++
---++.+ ***
-+-+++..++**
-+--+++.+++*
--++++.+..*
+++++.+**
+++****.****** -
+++*****.**.. --
+ ***....+..--
...+.....--
--.........--
---......
--
(Era para ser Mario, mas não ficou muito bom ...)
Se a especificação ainda não estiver clara, eu tenho uma implementação sem golfe escrita em Python 2.7. Você pode executá-lo e experimentar para ter uma ideia de como a especificação funciona. Você também pode rir das minhas habilidades de programação.
Isso é código-golfe, e a entrada mais curta ganha. Faça perguntas nos comentários se não estiver claro.
a+a+a+a+a, produziria cinco sinais de adição um em cima do outro.
