Vous ne voulez pas payer pour le programme architectural coûteux, vous décidez donc de lancer le vôtre. Vous décidez d'utiliser ASCII pour concevoir vos bâtiments. Votre programme prendra en une seule chaîne formatée d'une manière spécifique, et le programme sortira le bâtiment.
Contribution
L'entrée se compose d'une seule ligne de caractères. On peut supposer qu'il ne contient que les lettres a-j, les chiffres 1-9et les symboles -et +.
Description de sortie
Pour chaque lettre a-j, le programme affichera une ligne verticale comme suit. Nous appellerons cela une colonne.
.
..
...
****
*****
******
-------
--------
+++++++++
++++++++++
abcdefghij
Par exemple, l'entrée abcdefgfedefghgfedcproduirait:
.
* ***
*** *****
***** *******
---------------
-----------------
++++++++++++++++++
+++++++++++++++++++
Une lettre peut être préfixée par un entier positif n, ce qui ajoutera des nespaces blancs sous la colonne. Nous appellerons cela un décalage. Par exemple, en utilisant Spour noter un espace, l'entrée 3b2b3bproduirait:
+ +
+++
S+S
SSS
SSS
Une lettre peut également être préfixée par un entier négatif-m , ce qui supprimera les caractères m non blancs en bas de la colonne (ne les remplacez pas par des blancs, supprimez-les entièrement). Nous appellerons cela une tranche. Par exemple, l'entrée -1j-2j-3j-4j-5j-6j-7j-8jproduirait:
.
..
...
*...
**...
***...
-***...
--***...
+--***..
Un décalage et une tranche peuvent être appliqués à la même ligne, mais le décalage doit aller en premier. En d'autres termes, la lettre peut être préfixée par n-m, où nest la taille de l'offset et mla taille de la tranche. Par exemple, en utilisant Spour noter un espace, l'entrée '2-4j' produirait:
.
.
.
*
*
*
S
S
Enfin, l' +opérateur utilisé entre deux colonnes indique qu'elles doivent être empilées les unes sur les autres dans la même colonne plutôt que dans des colonnes séparées. Par exemple, l'entrée «2-4ja» sort:
.
.
.
*
*
*
S
S+
Alors que les 2-4j+asorties d' entrée :
+
.
.
.
*
*
*
S
S
Voici un exemple d'entrée:
abiehef+ehfhabc
Et la sortie résultante:
*
-
. -
. . +. .
* * +* *
* * ****
********
--------
-------- -
+++++++++ ++
+++++++++++++
On dirait une vieille tour de château détruite.
Voici un autre exemple d'entrée:
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
Et la sortie résultante:
****** +++
******+.*++
---++.+ ***
-+-+++..++**
-+--+++.+++*
--++++.+..*
+++++.+**
+++****.****** -
+++*****.**.. --
+ ***....+..--
...+.....--
--.........--
---......
--
(C'était censé être Mario mais ça ne s'est pas très bien passé ...)
Si la spécification n'est toujours pas claire, j'ai une implémentation non-golfée écrite en Python 2.7. Vous pouvez l'exécuter et expérimenter pour avoir une idée du fonctionnement de la spécification. Vous pouvez également choisir de rire de mes compétences en programmation.
C'est le golf de code, donc l'entrée la plus courte l'emporte. Posez des questions dans les commentaires si elles ne sont pas claires.
a+a+a+a+a, les cinq signes plus s'afficheraient les uns sur les autres.
