Die Herausforderung
Ihr Programm oder Ihre Funktion akzeptiert eine einzelne Zeichenfolge, die von STDIN eingegeben wurde, oder einen Funktionsparameter. Sie können davon ausgehen, dass die Eingabe nur alphabetische Zeichen (a-zA-Z), Leerzeichen und Punkte enthält. Bei der Eingabe wird die Groß- und Kleinschreibung nicht berücksichtigt, daher sollten Sie "a" genauso behandeln wie "A".
Für jedes Zeichen in der Zeichenfolge geben Sie eine Darstellung eines Gebäudes gemäß der folgenden Spezifikation aus.
Jedes Gebäude muss ein Dach haben, das in der obersten Zeile durch einen Unterstrich und in der zweiten Zeile durch einen Schrägstrich, ein Leerzeichen und einen umgekehrten Schrägstrich gekennzeichnet ist.
_
/ \
Sie haben dann mehrere Stockwerke, die mit der Buchstabenanzahl (a = 1, b = 2, c = 3 usw.) übereinstimmen und durch eine Wand (|) auf jeder Seite und ein Leerzeichen in der Mitte dargestellt werden. Das Untergeschoss (und nur das Untergeschoss) sollte ein Fundament haben, das einen Unterstrich zwischen den Wänden darstellt. So was...
|_|
So würde zum Beispiel 'b' so aussehen
_
/ \
| |
|_|
Jetzt wissen wir, dass sehr hohe, schmale Gebäude nicht stehen können und an der Basis breiter werden müssen, sodass kein Gebäude ohne zusätzliche Unterstützung mehr als drei Stockwerke hoch stehen kann. Also sollten Sie alle drei Ebenen (nicht weniger) eine "Verbreiterungsebene" hinzufügen. Die sich erweiternde Schicht besteht aus einem Schrägstrich und einem umgekehrten Schrägstrich direkt über den Wänden des Abschnitts darunter, und der Abschnitt darunter sollte zwei Stellen breiter sein als der Abschnitt darüber. Die zusätzliche Schicht zählt nicht zur Höhe des Gebäudes.
Gebäude sollten sich nicht überlappen, aber keine unnötigen Abstände haben, und der Boden sollte immer flach sein, sodass alle Gebäude ihre Basis auf derselben Ebene haben sollten.
Beispielsweise sieht 'abcdefga' so aus.
_
/ \
_ | |
_ / \ | |
_ / \ | | | |
/ \ | | | | / \
_ | | | | | | | |
_ / \ | | | | / \ | |
_ / \| | | | / \| | | | _
/ \| || |/ \| || |/ \/ \
|_||_||_||___||___||___||_____||_|
Leerzeichen in der Zeichenfolgeneingabe sollten durch ein doppeltes Leerzeichen dargestellt werden.
Punkte in der Zeichenfolgeneingabe sollten durch Trümmer wie dieses dargestellt werden.
/\/\
Weitere Beispiele
Eingabe = Hello world.
Ausgabe =
_
/ \
| |
| |
| |
/ \
| |
| | _
| | / \
/ \ | |
| | | |
_ | | _ | |
/ \ | | / \ / \
| | / \ | | | |
| | | | | | | |
_ _ | | | | | | | | _
/ \ / \ / \ | | / \ / \ / \
| | | | | | / \ | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
_ / \ / \ / \ | | / \ / \ / \
/ \ | | | | | | / \ | | | | | |
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
| | _ / \ / \ / \ | | / \ / \ / \
/ \ / \ | | | | | | / \ | | | | | | _
| | | | | | | | | | | | | | | | | | / \
| | | | | | | | | | | | | | | | | | | |
| | | | / \/ \/ \ | | / \/ \/ \ | |
/ \/ \| || || | / \| || || | | |
| || || || || | | || || || |/ \
|_____||___||_______||_______||_________| |_______________||_________||___________||_______||___|/\/\
Eingabe = lorem ipsum
_
/ \
_ | |
/ \ | |
_ | | | |
/ \ | | / \
| | _ | | | |
| | / \ / \ | |
_ | | | | | | | |
/ \ / \ | | | | / \
| | | | _ | | | | | | _
| | | | / \ / \ / \ | | / \
_ | | | | | | | | | | | | | |
/ \ / \ / \ | | | | | | / \ | |
| | | | | | | | | | | | | | | |
| | | | | | / \ / \ / \ | | / \
| | | | | | | | _ | | | | | | | |
/ \ / \ / \ | | / \ | | | | / \ | |
| | | | | | | | | | | | | | | | | |
| | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | |
/ \ / \ / \ _ | | / \ | | | | / \ | |
| | | | | | / \ | | | | | | | | | | | |
| | | | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | | | |
/ \/ \/ \ | | | | / \ | | | | / \ | |
| || || |/ \ | | | | | | | | | | | |
| || || || |/ \ | |/ \/ \| |/ \
|_______||_________||___________||___||_________| |_____||___________||_____________||_____________||_________|
Eingabe = a.a.a.x.x.x.a.a.a
_ _ _
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
_ _ _ | | | | | | _ _ _
/ \ / \ / \ | | | | | | / \ / \ / \
|_|/\/\|_|/\/\|_|/\/\|_______________|/\/\|_______________|/\/\|_______________|/\/\|_|/\/\|_|/\/\|_|
Regeln
- Natürlich ist dies Codegolf, die niedrigste Punktzahl in Bytes gewinnt
- Es gelten Standard-Regelungslücken
- Es sind beliebig viele zusätzliche Leerzeilen vor oder nach der Ausgabe zulässig
- Sie können das gesamte Ergebnis in einer Zeichenfolge ausgeben oder die Ausgabe als Array anbieten, wobei jedes Element eine Ausgabezeile darstellt, oder an STDOUT senden
Hinweis
Dies ist mein erster Beitrag bei PPCG. Es ist durch den Sandkasten gegangen. Alle negativen Punkte oder mögliche Verbesserungen bitte als Kommentar posten und ich werde tun, was ich kann
[a,z]
, [1.26]
Teile das Mego zu ändern , das erwähnt wird. Es optional zu haben ist oft das Beste (es sei denn, es ist ein wichtiger Teil der Herausforderung (es ist nicht hier).
[a,z]
und[A,Z]
nach[1,26]
scheint eine sinnlose Anforderung zu sein. Es wäre viel besser, nur eine Liste mit ganzen Zahlen als Eingabe zu verwenden (wobei0
dies die Eingabe für Trümmer ist). Das Posten Ihrer Herausforderung nach nur 21 Stunden in der Sandbox , ohne darauf zu warten, dass Stimmen oder Feedback von mehr als einem Benutzer eingehen, gilt nicht als "durch die Sandbox gegangen". Es wird empfohlen, die Herausforderungen mindestens 48-72 Stunden in der Sandbox zu belassen, damit die Benutzer genügend Zeit haben, sie zu überprüfen.