Ho sentito che il tuo codice può essere eseguito più velocemente se lo indentrai al contrario, in modo che il compilatore possa elaborarlo come un modello di progettazione dell'albero dalla cima dei "rami" verso il basso. Questo aiuta perché la gravità accelera il tempo necessario per la compilazione del codice e migliora l'efficienza della struttura dei dati. Ecco un esempio, negli script Java:
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;
}
Ma per qualche motivo il Blocco note non ha un'impostazione per farlo automaticamente, quindi ho bisogno di un programma per farlo per me.
Descrizione
Gli invii devono prendere uno snippet di codice come input, invertire il rientro e generare il codice risultante.
Questo viene fatto con la seguente procedura:
Dividi il codice in righe. Ogni riga inizierà con zero o più spazi (non ci saranno schede).
Trova tutti i livelli di rientro univoci nel codice. Ad esempio, per l'esempio sopra, questo sarebbe
0 4 8 12
Invertire l'ordine di questo elenco di livelli di rientro e mappare l'elenco invertito all'elenco originale. Questo è difficile da spiegare a parole, ma per l'esempio, sembrerebbe
0 — 12 4 — 8 8 — 4 12 — 0
Applica questa mappatura al codice originale. Nell'esempio, una linea con rientro dello spazio 0 verrebbe indentata da 12 spazi, 4 spazi diventerebbero 8 spazi, ecc.
Input Output
L'ingresso e l'uscita possono essere forniti come desiderato (STDIN / STDOUT, parametro funzione / valore di ritorno, ecc.); se la tua lingua non supporta input multilinea (o semplicemente non vuoi), puoi usare il |
carattere per separare le righe.
L'input consisterà solo di nuove righe ASCII + stampabili e non conterrà righe vuote.
Casi test
Ingresso:
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;
}
Output: il codice di esempio sopra.
Ingresso:
a
b
c
d
e
f
g
h
Produzione:
a
b
c
d
e
f
g
h
Ingresso:
1
2
3
2
1
Produzione:
1
2
3
2
1
Ingresso:
foo
Produzione:
foo