Ich arbeite an einem Problem, das ich mir zum Spaß gesetzt habe, nämlich ein Python-Skript zu erstellen, das die geraden Zahlen von 0 bis 100 ausgibt. Die Herausforderung besteht darin, das Skript so klein wie möglich zu gestalten. Das habe ich bisher:
for x in range(0, 101):
if (x % 2 == 0):
print x
Derzeit sind es 60 Bytes. Kann sich jemand einen Weg überlegen, es kleiner zu machen?
Edit: print(*range(2,101,2),sep='\n')
das sind 30 Bytes. Noch kleiner?
i=2;exec"print i;i+=2;"*50
0
oder anfangen2
? Ich pythoniere nicht viel, aber es sieht für mich so aus, als ob Ihre beiden Beispiele verschiedene Dinge tun. Bitte korrigieren Sie mich, wenn nicht.print "0 10 100"
(Binär in Ordnung?)Antworten:
Python 2 - 12 Zeichen
Die dezimale Darstellung aller geraden Zahlen von 0 bis 100 finden Sie in der Ausgabe:
Als Bonus können auch die ungeraden Zahlen.
quelle
Python 3, 22 (Möglicherweise nicht erlaubt)
Wenn die Herausforderung darin besteht, "ein Python-Skript zu erstellen, das die geraden Zahlen von 0 bis 100 ausgibt " und nicht "ein Python-Skript zu erstellen, das die geraden Zahlen von 0 bis 100, durch Zeilenumbrüche getrennt , ausgibt ", lautet die kürzeste Lösung:
Denken Sie daran, dass es beim Code-Golf sehr wichtig ist, sich nicht einzuschränken, sondern das zu tun, was das Problem verlangt, und nicht mehr.
quelle
possibly not allowed
im Titel. Andererseits ist es auch möglich, dass er / sie in die Ausgabe seines ursprünglichen Programms verwickelt ist und die ursprüngliche Problemspezifikation vergessen hat. Da ich nicht weiß, was der Fall ist, gab ich diese Antwort.Python2 26
unabhängige Entdeckung der @ bitpwner-Lösung
quelle
Python 2 - 26
Basierend auf dem Tipp zu Exec mit String-Multiplikation bei Tips for Golfing in Python .
quelle
Python 2, 26 (möglicherweise nicht erlaubt)
Es wurde nicht genau festgelegt, in welcher Reihenfolge die Nummern gedruckt werden sollten.
quelle
Python 2, 28
quelle
Python 2 - 20 (Möglicherweise nicht erlaubt)
Dies ist Python 2-spezifisch und wahrscheinlich ein Betrug, da die Liste gedruckt wird, aber alle Zahlen auf dem Bildschirm angezeigt werden:
quelle
Python 2 in * NIX, 24
Wenn Sie hinzufügen müssen
Dann beträgt die Summe 33 Zeichen.
quelle
os.system
ruft ein Systemprogramm auf.os.system('a')
, weil ich zufällig ein Programma
mit dem gewünschten Verhalten auf meinem SystemPython 3, 29
Wenn Sie in Python 2 sind und die Druckfunktion bereits importiert haben, müssen Sie das Iterator-Objekt nicht in eine Liste umwandeln und es wird zu 25 Zeichen:
Ich weiß aber nicht, dass das völlig fair ist.
Hier ist eine weitere lustige Idee, die in Python 2 oder 3 funktioniert. Es ist ein bisschen länger.
quelle
*a,=map(print,range(0,101,2))
werden .Python 2 - 24
(basierend auf bitpwner und Sparr Lösung)
In der Shell enthält "_" den Wert des zuvor ausgewerteten Ausdrucks
quelle
range(0,102,2)
Da dies alle geraden Zahlen (plus einige Kommas und zwei Klammern) auf dem Bildschirm anzeigen würde.Verständnis der Python-Liste - 39
Hierfür wird ein Listenverständnis verwendet. Ein Trick, um es zu verkürzen, besteht darin, den Index mit 2 zu multiplizieren, anstatt von 0 auf 100 zu wechseln, und eine abschließende
if x % 2
Prüfung auf Gerade durchzuführen.Unter Verwendung einer Karte und des Vorschlags von @ isaacg ergeben sich dieselben 39 Zeichen:
Bearbeiten: Nach dem Trennen von Werten durch Zeilenvorschub ist es bei weitem nicht das kürzeste.
quelle
prints the even numbers from 0 to 100
, nicht nur zu generieren. Auch, wenn Sie nur die Liste wollen,range(0,101,2)
ist kürzer.Python 2 - 20 (fraglich)
Wenn die durch Leerzeichen getrennte Lösung von isaacg in Ordnung ist, ist vermutlich auch die normale Listenformatierung:
Wenden Sie für weitere Regeländerungen den Vorschlag von SirBraneDamuj aus den Kommentaren an:
und Sie sind 16 Jahre alt. Und wenn sie durch zusätzlichen Müll getrennt werden?
quelle