Hintergrund
Minifier werden in der Regel verwendet, wenn Sie JavaScript in Ihrem Webbrowser bereitstellen. Es wird häufig verwendet, um die Anzahl der zu sendenden Bytes zu verringern. Das Sparen von Bandbreite ist aus offensichtlichen Gründen nützlich. Einige Leute benutzen Obfuscater (die absichtlich das Lesen von Code erschweren), ich spreche nicht über diese.
Wir werden Python 2 minimieren
Ich habe überlegt, ob JavaScript oder Python für die Minimierungserfahrung verwendet werden soll oder nicht, und ich habe mich aus zwei Gründen für Python entschieden: Auf den Leerraum kommt es an, und ich denke, das wird dem Problem eine interessante Dynamik verleihen. Darüber hinaus bietet die Verwendung von Python 2.7 eine weitere Dynamik, z. B. das Entfernen überflüssiger Elemente ()
während eines Druckvorgangs (z. B. print("Hello world")
vs. print"Hello world"
). Ich persönlich hätte es vorgezogen, es für jede Sprache zu öffnen, aber für einige Sprachen ist dieser Prozess nicht sehr sinnvoll. Und welche Sprache Sie sich für die Minimierung entscheiden, wirkt sich direkt auf Ihre Punktzahl aus (und ob die Sprache überhaupt minimiert werden kann).
Technische Daten
Ihr Ziel ist es, den Code nur so zu ändern, dass seine Funktionalität in keiner Weise verändert wird. Sie können sich natürlich ändern Variablennamen (in Ihrem Verkleinerungsprogramm), solange sie nicht wirksam ausgegeben hat ( im Auge behalten Umfang ). Obwohl ich Ihnen ein spezifisches Programm gebe, optimieren Sie es bitte nicht für den Testfall, da alle Standardlücken verboten sind.
Ergebnis : Länge des Programms, nachdem Sie es minimiert haben.
Eingabe : Beliebiges Python 2.7-Programm (das keine Fehler enthält)
Ausgabe : Eine verkleinerte Version.
Obwohl Ihr Code in der Lage sein sollte, alle gültigen Python 2.7-Eingaben aufzunehmen, ist es erforderlich, Ihr Skript mit etwas zu testen, um seine Wirksamkeit zu beweisen.
Klicken Sie hier , um das Beispielprogramm anzuzeigen.
Das Problem verständlicher machen
Fühlen Sie sich frei, Code zu verwenden oder zu ändern, der sich in meiner Lösung befindet (siehe unten). Ich habe dies getan, um Ihnen den Einstieg in die grundlegende Angebotsabwicklung zu erleichtern. Sie können es jedoch auf Einrückung usw. erweitern.
Beispiel für die Minimierung von Python
Der gesamte Leerraum könnte mit der minimal möglichen Menge ersetzt werden (ich gebe zu, dass Sie in Python einige knifflige Dinge mit Tabulatoren machen können , aber das überlasse ich Ihnen, um zu entscheiden, ob Sie es implementieren oder nicht).
Beispiel
Folgende:
def print_a_range(a):
for i in range(a):
print(i)
Könnte sein:
def print_a_range(a):
for i in range(a):
print(i)
Technisch gesehen können Sie eine Schleife, die nur eine Zeile enthält, noch weiter komprimieren:
def print_a_range(a):
for i in range(a):print(i) #Note, you can also remove the `()` here.
Es gibt jedoch eine andere Möglichkeit, Leerzeichen in Python zu minimieren:
Folgende:
print ([a * 2 for a in range(20) if a % 2 == 0])
Könnte sein:
print([a*2for a in range(20)if a%2==0])
Beachten Sie, dass kein Leerzeichen zwischen 2
und erforderlich ist for
. Variablen, Funktionen und Schlüsselwörter dürfen nicht mit einer Zahl beginnen. Der Python-Interpreter ist also in Ordnung <num><keyword>
, kein Leerzeichen. Beachten Sie auch, dass zwischen )
und kein Leerzeichen stehen muss if
.
Beachten Sie, dass Sie die Ausgabe des Programms nicht ändern dürfen! So:
print"f(x)=x*2 is a great equation!"
Die obige print-Anweisung sollte gleich bleiben, da das Leerzeichen dazwischen entfernt 2
und is
die Ausgabe geändert würde.
'1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'
in '1'*100
erlaubt? Müssen Sie tun, wie das Verhalten gleich ist?