sfondo
I minifiers vengono utilizzati, comunemente, quando si offre JavaScript al tuo browser Web. È comunemente usato per ridurre il numero di byte che devono essere inviati. Il salvataggio della larghezza di banda è utile per ovvi motivi. Alcune persone usano gli offuscatori (che intenzionalmente rendono il codice più difficile da leggere), non sto parlando di quelli.
Minificheremo Python 2
Stavo discutendo se usare o meno JavaScript o Python per l'esperienza di minimizzazione e ho deciso su Python per due motivi: lo spazio bianco è importante e penso che aggiungerà un'interessante dinamica al problema. Inoltre, l'utilizzo di Python 2.7 fornirà un'altra dinamica, come rimuovere il superfluo ()
durante una stampa (cioè print("Hello world")
vs. print"Hello world"
). Personalmente avrei preferito aprirlo a qualsiasi lingua, ma per alcune lingue questo processo non avrebbe molto senso. E quale lingua decidi di minimizzare avrà un impatto diretto sul tuo punteggio (e se anche la lingua può essere minimizzata).
Specifiche
Il tuo obiettivo è modificare il codice solo in un modo che non cambierà comunque la sua funzionalità. È possibile, ovviamente, modificare i nomi delle variabili (all'interno del programma di minimizzazione) purché non influisca sull'output (tenere traccia dell'ambito ). Anche se ti sto dando un programma specifico, ti preghiamo di non ottimizzare il caso di test in quanto tutte le scappatoie standard sono vietate.
Punteggio : durata del programma dopo averlo minimizzato.
Input : qualsiasi programma Python 2.7 (che non contiene errori)
Output : una versione minimizzata.
Sebbene il tuo codice dovrebbe essere in grado di accogliere tutti gli input validi di Python 2.7, è necessario testare il tuo script rispetto a qualcosa per dimostrarne l'efficacia.
Fare clic qui per visualizzare il programma di esempio.
Rendere il problema più accessibile
Sentiti libero di usare o modificare qualsiasi codice trovato all'interno della mia soluzione (elencato di seguito). Ho fatto questo per iniziare con la gestione delle quotazioni di base del preventivo; tuttavia, è possibile espanderlo al rientro e così via
Esempi di modi per minimizzare Python
Tutto lo spazio bianco potrebbe essere sostituito con la quantità minima possibile (riconosco che in Python puoi fare alcune cose complicate con le schede , ma lo lascerò a te decidere se implementarlo o meno).
Esempio
Il seguente:
def print_a_range(a):
for i in range(a):
print(i)
Potrebbe essere:
def print_a_range(a):
for i in range(a):
print(i)
Tecnicamente, se c'è solo una riga all'interno di un loop, puoi comprimerlo ancora di più:
def print_a_range(a):
for i in range(a):print(i) #Note, you can also remove the `()` here.
Tuttavia, esiste un altro modo per minimizzare gli spazi bianchi in Python:
Il seguente:
print ([a * 2 for a in range(20) if a % 2 == 0])
Potrebbe essere:
print([a*2for a in range(20)if a%2==0])
Si noti che non è necessario uno spazio tra 2
e for
. Variabile, funzioni e parole chiave non possono iniziare con un numero. Quindi, l'interprete Python va bene <num><keyword>
, senza spazio. Si dovrebbe anche notare che non è necessario uno spazio tra )
e if
.
Nota, non è necessario modificare l'output del programma! Così:
print"f(x)=x*2 is a great equation!"
L'istruzione di stampa sopra dovrebbe rimanere la stessa perché rimuovendo lo spazio tra 2
e is
modificare l'output.
'1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'
in '1'*100
permesso? È necessario fare poiché il comportamento è lo stesso?