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-9
e 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 abcdefgfedefghgfedc
produziria:
.
* ***
*** *****
***** *******
---------------
-----------------
++++++++++++++++++
+++++++++++++++++++
Uma letra pode ser prefixada com um número inteiro positivo n
, que adicionará n
caracteres de espaço em branco abaixo da coluna. Nós chamaremos isso de deslocamento. Por exemplo, usando S
para notar um espaço em branco, a entrada 3b2b3b
produziria:
+ +
+++
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-8j
produziria:
.
..
...
*...
**...
***...
-***...
--***...
+--***..
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 m
o tamanho da fatia. Por exemplo, usando S
para 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+a
saí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.