Latar Belakang
Minifier digunakan, biasanya, saat menyajikan JavaScript ke Browser Web Anda. Ini biasanya digunakan untuk mengurangi jumlah byte yang harus dikirim. Menghemat bandwidth berguna untuk alasan yang jelas. Beberapa orang menggunakan obfuscaters (yang sengaja membuat kode lebih sulit dibaca), saya tidak membicarakannya.
Kami akan memperkecil Python 2
Saya berdebat tentang apakah menggunakan JavaScript atau Python untuk pengalaman minifying atau tidak, dan saya memutuskan pada Python karena dua alasan: ruang putih penting dan saya pikir itu akan menambah dinamika masalah yang menarik. Selain itu, menggunakan Python 2.7 akan memberikan dinamika lain, seperti menghapus berlebihan ()
saat mencetak (yaitu print("Hello world")
vs. print"Hello world"
). Secara pribadi, saya lebih suka membukanya untuk bahasa apa pun, tetapi untuk beberapa bahasa proses ini tidak masuk akal. Dan, bahasa apa yang Anda putuskan untuk dikurangi akan berdampak langsung pada skor Anda (dan jika bahasa itu bahkan dapat diperkecil).
Spesifikasi
Tujuan Anda adalah hanya memodifikasi kode dengan cara yang tidak akan mengubah fungsinya dengan cara apa pun. Anda dapat, tentu saja, mengubah nama variabel (di dalam program minifying Anda) selama itu tidak mempengaruhi output (melacak cakupan ). Meskipun saya memberi Anda program khusus, tolong jangan optimalkan untuk kasus uji karena semua lubang standar dilarang.
Nilai : panjang program setelah Anda memperkecilnya.
Input : Setiap program Python 2.7 (yang tidak mengandung kesalahan)
Output : Versi yang diperkecil.
Meskipun kode Anda harus dapat mengakomodasi semua input Python 2.7 yang valid, Anda perlu menguji skrip Anda terhadap sesuatu untuk membuktikan efektivitasnya.
Klik di sini untuk melihat contoh program.
Membuat masalah lebih mudah didekati
Jangan ragu untuk menggunakan atau memodifikasi kode apa pun yang ditemukan di dalam solusi saya (tercantum di bawah). Saya melakukan ini untuk membantu Anda memulai dengan penanganan penawaran dasar quote; Namun, Anda dapat memperluasnya ke lekukan, dan lain-lain.
Contoh cara untuk memperkecil Python
Semua ruang putih dapat diganti dengan jumlah minimum yang mungkin (saya akui bahwa dengan Python Anda dapat melakukan beberapa hal rumit dengan tab , tetapi saya akan menyerahkannya kepada Anda untuk memutuskan apakah akan menerapkannya atau tidak).
Contoh
Pengikut:
def print_a_range(a):
for i in range(a):
print(i)
Bisa jadi:
def print_a_range(a):
for i in range(a):
print(i)
Secara teknis, jika hanya ada satu baris di dalam satu loop, Anda dapat lebih menekannya:
def print_a_range(a):
for i in range(a):print(i) #Note, you can also remove the `()` here.
Namun, ada cara lain Anda dapat meminimalkan ruang putih di Python:
Pengikut:
print ([a * 2 for a in range(20) if a % 2 == 0])
Bisa jadi:
print([a*2for a in range(20)if a%2==0])
Perhatikan, bahwa tidak perlu ruang antara 2
dan for
. Variabel, fungsi, dan kata kunci tidak dapat dimulai dengan angka. Jadi, juru bahasa Python tidak apa-apa <num><keyword>
, tidak ada ruang. Anda juga harus memperhatikan bahwa tidak ada jarak antara )
dan if
.
Catatan, Anda tidak boleh mengubah output program! Begitu:
print"f(x)=x*2 is a great equation!"
Pernyataan cetak di atas harus tetap sama karena menghilangkan ruang di antara 2
dan is
akan mengubah output.
'1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'
menjadi '1'*100
diizinkan? Perlu dilakukan karena perilaku yang sama?