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.Respostas:
Ruby,
223214 bytesFoi divertido. :)
Embora deva ser bastante óbvio, descobri uma nova maneira de fazer esses desafios em que as cadeias são construídas a partir de colunas: apenas faça-as em linhas e transponha a matriz de caracteres antes de juntar tudo.
fonte
puts (0..z=g.map(&:size).max-1).map{|i|g.map{|y|(v=y[z-i])?v:?\ }*''}
. Mas provavelmente não é tão divertido sem a transposição.Cobra - 473
Acho que o Cobra nunca ganhará um desses: /
Tudo agradável e comentou:
EDIT: Acabei de perceber que isso parece suspeitamente semelhante à solução Ruby. Mentes brilhantes pensam igual?
fonte
Lua - 451
Nada especial. Foi divertido renomear uma carga de funções por uma vez. Vou editar o código não destruído mais tarde.
Experimente aqui. Saída de amostra:
fonte
PowerShell ,
214212209206200 bytes-3 bytes obrigado @Veskah
Experimente online!
Versão menos golfe:
fonte
(-?.)
deve funcionar tambémPython 3, 268 bytes
Principalmente ungolfed:
fonte