Nie chcesz płacić za kosztowny program architektoniczny, więc decydujesz się na własny projekt. Decydujesz się użyć ASCII do projektowania budynków. Twój program pobierze pojedynczy ciąg sformatowany w określony sposób, a program wygeneruje budynek.
Wejście
Dane wejściowe składają się z jednego wiersza znaków. Można założyć, że zawiera on tylko litery a-j, cyfry 1-9oraz symbole -i +.
Opis wyjścia
Dla każdej litery a-jprogram wyświetli pionową linię w następujący sposób. Nazwiemy to kolumną.
.
..
...
****
*****
******
-------
--------
+++++++++
++++++++++
abcdefghij
Na przykład dane wejściowe abcdefgfedefghgfedcwyprowadzałyby:
.
* ***
*** *****
***** *******
---------------
-----------------
++++++++++++++++++
+++++++++++++++++++
Litera może być poprzedzona dodatnią liczbą całkowitą n, która doda nbiałe znaki poniżej kolumny. Nazwiemy to przesunięciem. Na przykład, używając Sdo zanotowania białych znaków, dane 3b2b3bwyjściowe wyprowadzą:
+ +
+++
S+S
SSS
SSS
Litera może być również poprzedzona ujemną liczbą całkowitą -m, która usunie dolne m znaki spacji w kolumnie (nie zastąpi ich białymi spacjami, całkowicie je usunie). Nazwiemy to plasterkiem. Na przykład dane wejściowe -1j-2j-3j-4j-5j-6j-7j-8jwyprowadzałyby:
.
..
...
*...
**...
***...
-***...
--***...
+--***..
Przesunięcie i plasterek można zastosować do tej samej linii, ale przesunięcie musi być pierwsze. Innymi słowy, litera może być poprzedzona prefiksem n-m, gdzie njest rozmiarem przesunięcia i mjest rozmiarem wycinka. Na przykład, używając Sdo zanotowania białych znaków, wejście „2-4j” wyświetli:
.
.
.
*
*
*
S
S
Wreszcie +operator użyty między dwiema kolumnami wskazuje, że powinny one być ułożone jedna na drugiej w tej samej kolumnie zamiast w osobnych kolumnach. Na przykład wejście „2-4ja” wyprowadza:
.
.
.
*
*
*
S
S+
Natomiast dane wejściowe 2-4j+a:
+
.
.
.
*
*
*
S
S
Oto przykładowe dane wejściowe:
abiehef+ehfhabc
I wynikowa wydajność:
*
-
. -
. . +. .
* * +* *
* * ****
********
--------
-------- -
+++++++++ ++
+++++++++++++
Wygląda jak stara zniszczona wieża zamkowa.
Oto kolejne przykładowe dane wejściowe:
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
I wynikowa wydajność:
****** +++
******+.*++
---++.+ ***
-+-+++..++**
-+--+++.+++*
--++++.+..*
+++++.+**
+++****.****** -
+++*****.**.. --
+ ***....+..--
...+.....--
--.........--
---......
--
(Miał być Mario, ale nie okazał się bardzo dobry ...)
Jeśli specyfikacja nadal nie jest jasna, mam implementację bez golfa napisaną w Pythonie 2.7. Możesz go uruchomić i eksperymentować, aby przekonać się, jak działa specyfikacja. Możesz także śmiać się z moich umiejętności programistycznych.
To jest golf golfowy, więc wygrywa najkrótszy wpis. Zadawaj pytania w komentarzach, jeśli są niejasne.
a+a+a+a+awyprowadziłoby pięć znaków plus na siebie.
