Sie möchten kein Geld für das teure Architekturprogramm bezahlen, also entscheiden Sie sich, Ihr eigenes zu rollen. Sie entscheiden sich für ASCII, um Ihre Gebäude zu entwerfen. Ihr Programm nimmt eine einzelne Zeichenfolge auf, die auf bestimmte Weise formatiert ist, und das Programm gibt das Gebäude aus.
Eingang
Die Eingabe besteht aus einer einzelnen Zeichenzeile. Es kann angenommen werden, dass es nur die Buchstaben a-j
, die Zahlen 1-9
und die Symbole -
und enthält +
.
Ausgabebeschreibung
Für jeden Buchstaben a-j
gibt das Programm eine vertikale Linie wie folgt aus. Wir werden dies eine Spalte nennen.
.
..
...
****
*****
******
-------
--------
+++++++++
++++++++++
abcdefghij
Die Eingabe abcdefgfedefghgfedc
würde beispielsweise Folgendes ausgeben:
.
* ***
*** *****
***** *******
---------------
-----------------
++++++++++++++++++
+++++++++++++++++++
Einem Buchstaben kann eine positive Ganzzahl vorangestellt werden n
, die n
Leerzeichen unter der Spalte hinzufügt . Wir werden dies als Offset bezeichnen. Wenn Sie beispielsweise S
ein Leerzeichen notieren, gibt die Eingabe 3b2b3b
Folgendes aus:
+ +
+++
S+S
SSS
SSS
Ein Brief kann auch mit einer vorangestellt wird negative ganze Zahl -m
, das wird entfernt die unteren m
Nicht-Leerzeichen Zeichen der Säule (sie nicht mit Leerzeichen ersetzen, entfernen sie ganz). Wir werden das eine Scheibe nennen. Die Eingabe -1j-2j-3j-4j-5j-6j-7j-8j
würde beispielsweise Folgendes ausgeben:
.
..
...
*...
**...
***...
-***...
--***...
+--***..
Ein Versatz und ein Schnitt können auf dieselbe Linie angewendet werden, aber der Versatz muss zuerst erfolgen. Mit anderen Worten, dem Buchstaben kann das Präfix vorangestellt werden n-m
, wobei n
die Größe des Offsets und m
die Größe des Slice angegeben werden. Wenn Sie zum Beispiel S
ein Leerzeichen notieren, würde die Eingabe '2-4j' Folgendes ausgeben:
.
.
.
*
*
*
S
S
Schließlich gibt der +
zwischen zwei Spalten verwendete Operator an, dass sie in derselben Spalte statt in separaten Spalten übereinander gestapelt werden sollen. Beispielsweise gibt die Eingabe "2-4ja" Folgendes aus:
.
.
.
*
*
*
S
S+
Während die Input- 2-4j+a
Outputs:
+
.
.
.
*
*
*
S
S
Hier ist eine Beispieleingabe:
abiehef+ehfhabc
Und die resultierende Ausgabe:
*
-
. -
. . +. .
* * +* *
* * ****
********
--------
-------- -
+++++++++ ++
+++++++++++++
Sieht aus wie ein alter zerstörter Schlossturm.
Hier ist ein weiteres Eingabebeispiel:
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
Und die resultierende Ausgabe:
****** +++
******+.*++
---++.+ ***
-+-+++..++**
-+--+++.+++*
--++++.+..*
+++++.+**
+++****.****** -
+++*****.**.. --
+ ***....+..--
...+.....--
--.........--
---......
--
(Es sollte Mario sein, stellte sich aber nicht als sehr gut heraus ...)
Wenn die Spezifikation immer noch nicht klar ist, habe ich eine Implementierung ohne Golf in Python 2.7 geschrieben. Sie können es ausführen und experimentieren, um ein Gefühl dafür zu bekommen, wie die Spezifikation funktioniert. Sie können auch über meine Programmierkenntnisse lachen.
Dies ist Code-Golf, also gewinnt der kürzeste Einstieg. Stellen Sie Fragen in Kommentaren, wenn Sie unklar sind.
a+a+a+a+a
würden fünf Pluszeichen übereinander ausgegeben.Antworten:
Ruby,
223214 BytesDas hat Spaß gemacht. :)
Obwohl es ziemlich offensichtlich sein sollte, habe ich eine neue Methode gefunden, um diese Herausforderungen zu meistern, bei der Zeichenfolgen aus Spalten aufgebaut werden: Führen Sie sie einfach in Zeilen aus und transponieren Sie das Zeichenfeld, bevor Sie alles verbinden.
quelle
puts (0..z=g.map(&:size).max-1).map{|i|g.map{|y|(v=y[z-i])?v:?\ }*''}
. Aber wahrscheinlich nicht so lustig ohne die transponieren.Cobra - 473
Ich glaube nicht, dass Cobra jemals einen dieser Titel gewinnen wird: /
Alles schön und kommentiert:
EDIT: Ich habe gerade festgestellt, dass dies der Ruby-Lösung verdächtig ähnlich sieht. Große Köpfe denken ähnlich?
quelle
Lua - 451
Nichts Besonderes. Es hat Spaß gemacht, eine ganze Reihe von Funktionen einmal umzubenennen. Ich werde den ungolfed Code später bearbeiten.
Probieren Sie es hier aus. Beispielausgabe:
quelle
PowerShell ,
214212209206200 Bytes-3 Bytes danke @Veskah
Probieren Sie es online!
Weniger Golf Version:
quelle
(-?.)
sollte auch funktionierenPython 3, 268 Bytes
Meistens ungolfed:
quelle