Schreiben Sie ein Programm, das eine Zeichenfolge enthält, in der jede Zeile aus dem Zeichen besteht, das 0
durch eine bestimmte Anzahl von Leerzeichen eingerückt ist. Die oberste Zeile wird nicht eingerückt, und jede zweite Zeile wird um höchstens ein Leerzeichen mehr eingerückt als die Zeile unmittelbar davor.
Es werden keine Zeilen mit nachgestellten Leerzeichen angezeigt, aber Sie können optional davon ausgehen, dass es eine einzelne nachgestellte Zeile gibt.
Die Eingabe könnte beispielsweise so aussehen:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Ihre Aufgabe ist es, es wie eine hierarchische Gliederung zu nummerieren und dabei positive Ganzzahlen als Zeilenüberschriften zu verwenden. Dies wäre die Ausgabe für das Beispiel:
1
1
1
2
2
2
1
2
3
1
3
1
1
2
Beachten Sie, dass für jede hierarchische Einrückungsstufe eine eigene Menge ansteigender Zahlen festgelegt ist, auch wenn nur eine davon angegeben ist.
In der Ausgabe sollten keine nachgestellten Leerzeichen vorhanden sein, es kann jedoch optional eine einzelne nachgestellte Newline vorhanden sein.
Schreiben Sie ein vollständiges Programm, das die Eingabezeichenfolge über stdin oder die Befehlszeile akzeptiert, oder schreiben Sie eine Funktion, die die Zeichenfolge als Argument verwendet. Drucken Sie das Ergebnis aus oder geben Sie es als Zeichenfolge zurück.
Der kürzeste Code in Bytes gewinnt.
Beispiele
Wenn die leere Zeichenfolge eingegeben wird, sollte die leere Zeichenfolge ausgegeben werden.
Das nächsttrivialste Beispiel ist die Eingabe
0
was soll werden
1
Großes Beispiel - Eingabe:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Ausgabe:
1
1
1
2
1
3
1
2
1
2
1
1
2
3
4
2
3
1
2
3
2
1
1
2
1
2
3
4
5
6
7
8
9
10
11
1
1
1
12
1
3
4
5
1
1
1
1
1
1
2
2
2
2
2
2
1
2
1
2
6
7
quelle
S=[]\nfor w in input()[:-1].split('0\n'):S=([0]+S)[~len(w):];S[0]+=1;print w+`S[0]`
S=[]\nfor w in input().split('\n'):S=([0]+S)[-len(w):];S[0]+=1;print w[:-1]+`S[0]`
.CJam, 25 Bytes
Wie bei meiner Python-Antwort wird hier in einem Array gespeichert, bis zu welcher Zahl die einzelnen Einrückungsstufen zulässig sind. Ein Unterschied ist jedoch, dass dies verwendet
t
(Array-Set) verwendet wird, um die 0 in jeder Zeile durch die gewünschte Zahl zu ersetzen.Probieren Sie es online aus .
quelle
JavaScript ES6,
8381 BytesHierbei wird ein Array verwendet, das die aktuelle Nummer für jede Einrückungsstufe enthält. Alles, was darüber hinausgeht, wird mit auf 0 zurückgesetzt
fill()
. BEARBEITEN: 2 Bytes gespart dank vihan1086's Tipp.Das folgende Stack-Snippet kann zum Testen verwendet werden, da es leicht ungolfed ist und eine besser unterstützte ES5-Syntax verwendet. Die zweite Funktion ist eine Polyfüllung,
fill()
da es keinen kurzen Weg gibt, dies ohne ES6 zu tun.quelle
Python - 191
Die Funktion ist
z
.quelle
Pip
-rn
,3127 BytesEingabe von stdin. Probieren Sie es online!
Erläuterung
quelle