Saya pernah mendengar bahwa kode Anda dapat berjalan lebih cepat jika Anda memasukkannya secara terbalik, sehingga kompiler dapat memprosesnya seperti pola desain pohon dari bagian atas "cabang" ke bawah. Ini membantu karena gravitasi akan mempercepat waktu yang dibutuhkan untuk mengkompilasi kode Anda, dan efisiensi struktur data ditingkatkan. Berikut ini contohnya, dalam skrip 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;
}
Tetapi untuk beberapa alasan Notepad tidak memiliki pengaturan untuk melakukan ini secara otomatis, jadi saya perlu program untuk melakukannya untuk saya.
Deskripsi
Pengajuan harus mengambil cuplikan kode sebagai input, membalikkan lekukan, dan mengeluarkan kode yang dihasilkan.
Ini dilakukan dengan prosedur berikut:
Bagi kode menjadi beberapa baris. Setiap baris akan mulai dengan nol atau lebih banyak spasi (tidak akan ada tab).
Temukan semua level lekukan unik dalam kode. Misalnya, untuk contoh di atas, ini akan menjadi
0 4 8 12
Membalik urutan daftar tingkat indentasi ini, dan memetakan daftar terbalik ke daftar asli. Ini sulit dijelaskan dengan kata-kata, tetapi sebagai contoh, akan terlihat seperti
0 — 12 4 — 8 8 — 4 12 — 0
Terapkan pemetaan ini ke kode asli. Dalam contoh ini, baris dengan indentasi 0-spasi akan menjadi indentasi oleh 12 spasi, 4 spasi akan menjadi 8 spasi, dll.
Input output
Input dan output dapat disediakan namun Anda ingin (STDIN / STDOUT, parameter fungsi / nilai pengembalian, dll.); jika bahasa Anda tidak mendukung input multiline (atau Anda tidak mau), Anda dapat menggunakan |
karakter untuk memisahkan baris.
Input akan terdiri dari hanya baris ASCII + yang dapat dicetak, dan tidak akan berisi baris kosong.
Uji kasus
Memasukkan:
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: contoh kode di atas.
Memasukkan:
a
b
c
d
e
f
g
h
Keluaran:
a
b
c
d
e
f
g
h
Memasukkan:
1
2
3
2
1
Keluaran:
1
2
3
2
1
Memasukkan:
foo
Keluaran:
foo