Ich habe gehört, dass Ihr Code schneller ausgeführt werden kann, wenn Sie ihn in umgekehrter Richtung einrücken, sodass der Compiler ihn wie ein Baummuster von der Spitze der "Zweige" nach unten verarbeiten kann. Dies ist hilfreich, da die Schwerkraft die Kompilierungszeit Ihres Codes verkürzt und die Effizienz der Datenstruktur verbessert. Hier ist ein Beispiel für Java-Scripting:
function fib(n) {
var a = 1, b = 1;
while (--n > 0) {
var tmp = a;
a = b;
b += tmp;
if (a === Infinity) {
return "Error!";
}
}
return a;
}
Aber aus irgendeinem Grund hat Notepad keine Einstellung, um dies automatisch zu tun, deshalb brauche ich ein Programm, um es für mich zu tun.
Beschreibung
Bei Einsendungen muss ein Code-Snippet als Eingabe verwendet, der Einzug umgekehrt und der resultierende Code ausgegeben werden.
Dies geschieht nach folgendem Verfahren:
Teilen Sie den Code in Zeilen auf. Jede Zeile beginnt mit null oder mehr Leerzeichen (es gibt keine Tabulatoren).
Finden Sie alle eindeutigen Einrückungsstufen im Code. Für das obige Beispiel wäre dies zum Beispiel
0 4 8 12
Kehren Sie die Reihenfolge dieser Liste der Einrückungsstufen um und ordnen Sie die umgekehrte Liste der ursprünglichen Liste zu. Dies ist schwer in Worten zu erklären, aber für das Beispiel würde es so aussehen
0 — 12 4 — 8 8 — 4 12 — 0
Wenden Sie diese Zuordnung auf den ursprünglichen Code an. In diesem Beispiel wird eine Zeile mit 0-Leerzeichen-Einrückung um 12 Leerzeichen eingerückt, 4 Leerzeichen werden zu 8 Leerzeichen usw.
Input-Output
Der Ein- und Ausgang kann nach Belieben bereitgestellt werden (STDIN / STDOUT, Funktionsparameter / Rückgabewert usw.); Wenn Ihre Sprache keine mehrzeilige Eingabe unterstützt (oder Sie es einfach nicht möchten), können Sie |
stattdessen das Zeichen verwenden, um Zeilen zu trennen.
Die Eingabe besteht nur aus druckbaren ASCII- und Zeilenumbrüchen und enthält keine Leerzeilen.
Testfälle
Eingang:
function fib(n) {
var a = 1, b = 1;
while (--n > 0) {
var tmp = a;
a = b;
b += tmp;
if (a === Infinity) {
return "Error!";
}
}
return a;
}
Ausgabe: der obige Beispielcode.
Eingang:
a
b
c
d
e
f
g
h
Ausgabe:
a
b
c
d
e
f
g
h
Eingang:
1
2
3
2
1
Ausgabe:
1
2
3
2
1
Eingang:
foo
Ausgabe:
foo