@pütone: Bin auf 106 Zeichen runter, bei Einhaltung von max. 80 Zeichen pro Zeile!
Eigentlich könnte ich noch 4 Leerzeichen einsparen, aber dann wird's hässlich ─ in zwei Fällen versagt das Syntax-Highlighting im Editor.
@applegreen: Du musst das Programm schon als Pythondatei abspeichern und dann *ausführen*. Das spuckt das PPM als Text aus, also musst Du die Ausgabe in eine Datei umleiten. Diese Datei kann man dann in einem Bildbetrachter anschauen. Oder auch nicht, weil es ja anscheinend nicht jedes Programm auf die Reihe bekommt PPMs mit einem Bit pro RGB-Komponente zu lesen. Was aber durchaus gültig ist.
Japanische Flagge /bzw. Kreis
Das beruhigt mich dann doch; als Python-Frischling wäre es auch verwunderlich gewesen, wenn mein "Gebot" nicht unterboten worden wäre.Bin auf 106 Zeichen runter, bei Einhaltung von max. 80 Zeichen pro Zeile!
Mittlerweile habe ich es immerhin auf 114 Zeichen geschafft. Leider steckt da immer noch ein
Code: Alles auswählen
for y in range(60)for x in range(90)
aber da bin ich mit meinem Latein (=Python) - momentan jedenfalls - am Ende.
An der Stelle habe ich nicht gespart, die ``range``\s habe ich auch (fast so) drin. Ich habe auch noch ein Leerzeichen vor jedem ``for``. Das sind die Stellen, die ich aus ästhetischen noch gelassen habe.
Mit Haskell bin ich auf 104 Zeichen gekommen. "List comprehensions" sind dort ein ganz kleines bisschen kompakter.
Mit Haskell bin ich auf 104 Zeichen gekommen. "List comprehensions" sind dort ein ganz kleines bisschen kompakter.
Also mindestens ein Zeichen Einsparung hätte ich noch anzubieten:
Wenn man möchte kann man natürlich aus der 60*90 noch 5400 machen.
Edit: Ach Mist, ist natürlich doof, wenn man auf die Elemente der Tupel zugreifen muss, da diese ja nicht an einen Namen gebunden werden.
Code: Alles auswählen
(divmod(x,60) for x in range(60*90))
Edit: Ach Mist, ist natürlich doof, wenn man auf die Elemente der Tupel zugreifen muss, da diese ja nicht an einen Namen gebunden werden.
Ihr seid doch Freaks >.<
@Topic:
Mich würde mal interessieren was jetzt aus Applegreen und dem Rest des Kurses, sowie natürlich auch der Aufgabe geworden ist...
Also ich bin z.Z. auch noch in der 10. Klasse... Aber sooo schwer war's dann doch wirklich nicht, darauf zu kommen mal den Satz des Pythagoras anzuwenden o.o
@Topic:
Mich würde mal interessieren was jetzt aus Applegreen und dem Rest des Kurses, sowie natürlich auch der Aufgabe geworden ist...
Also ich bin z.Z. auch noch in der 10. Klasse... Aber sooo schwer war's dann doch wirklich nicht, darauf zu kommen mal den Satz des Pythagoras anzuwenden o.o
@pütone: Kürzer als 101 Zeichen bekomme ich meinen Ansatz nicht.
Hey, aber das ist ja sowieso alles "Betrug" weil da so ein riesen fetter Python-Interpreter dranhängt. Es geht auch mit 19 Bytes statischen Daten und 98 Bytes x86-Assembler: http://paste.pocoo.org/show/28359/ (Assembler: NASM, BS: Linux)
@DarXun: Wieso Freaks!? Ist das nicht normal. Hihi
Hey, aber das ist ja sowieso alles "Betrug" weil da so ein riesen fetter Python-Interpreter dranhängt. Es geht auch mit 19 Bytes statischen Daten und 98 Bytes x86-Assembler: http://paste.pocoo.org/show/28359/ (Assembler: NASM, BS: Linux)
@DarXun: Wieso Freaks!? Ist das nicht normal. Hihi
Hmm... okay... Ich nehm' das Freaks zurück ;D
Wir sollten im Informatik-Unterricht Funktionen zum Entschlüsseln und Verschlüsseln ( Morsecode) schreiben...
Bin immernoch dabei die Funktion weiter zukürzen...
Die letzte Info-Stunde war am Donnerstag
Naja... hab eh' den kürzesten Quellcode.
Meine Mitschüler könnens nämlich überhaupt nich x'D,
dass sieht man schon wenn man sich die Funktionen von denen anschaut...
Für jeden Buchstaben im Alphabet eine Abfrage... x_X
Als hätten die von Schleifen und Arrays nie was gehört...
PS: Das Schlimmste an der Aufgabe war wohl immernoch das eintippen der ganzen Morsezeichen -.-
Wir sollten im Informatik-Unterricht Funktionen zum Entschlüsseln und Verschlüsseln ( Morsecode) schreiben...
Bin immernoch dabei die Funktion weiter zukürzen...
Die letzte Info-Stunde war am Donnerstag
Naja... hab eh' den kürzesten Quellcode.
Meine Mitschüler könnens nämlich überhaupt nich x'D,
dass sieht man schon wenn man sich die Funktionen von denen anschaut...
Für jeden Buchstaben im Alphabet eine Abfrage... x_X
Als hätten die von Schleifen und Arrays nie was gehört...
PS: Das Schlimmste an der Aufgabe war wohl immernoch das eintippen der ganzen Morsezeichen -.-
:S ... da versteh ich ja mal gaaaaaaar nixBlackJack hat geschrieben: Hey, aber das ist ja sowieso alles "Betrug" weil da so ein riesen fetter Python-Interpreter dranhängt. Es geht auch mit 19 Bytes statischen Daten und 98 Bytes x86-Assembler: http://paste.pocoo.org/show/28359/ (Assembler: NASM, BS: Linux)
irgendwann würden mich eure Lösungsideen dann ja auch mal interessieren ich vermute, die gibt es aber erst, wenn apple ne Lösung gepostet hat, oder?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dann sind sie ja enterprise-ready.DarXun hat geschrieben:Meine Mitschüler könnens nämlich überhaupt nich x'D,
dass sieht man schon wenn man sich die Funktionen von denen anschaut...
Für jeden Buchstaben im Alphabet eine Abfrage... x_X
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack hat geschrieben:Hey, aber das ist ja sowieso alles "Betrug" weil da so ein riesen fetter Python-Interpreter dranhängt. Es geht auch mit 19 Bytes statischen Daten und 98 Bytes x86-Assembler: http://paste.pocoo.org/show/28359/ (Assembler: NASM, BS: Linux)
Code: Alles auswählen
mov bl, -45
mov bh, -30
Code: Alles auswählen
mov bx, 0xE2D3
MfG
HWK
@meneliel: Assembler ist gar nicht so schwer. Das schwierigste ist eigentlich, dass es so einfach ist, sprich man hat nur so ganz primitive Werkzeuge/Bausteine aus denen man die Lösung zusammen setzen kann.
Programming from the Ground Up soll angeblich ein ganz gutes (freies) Buch sein. Eine Einführung ins Programmieren. Mit Assembler unter Linux.
@HWK: Das spart kein Byte weils ein 16-Bit-MOV im 32-Bit-Modus ist und deshalb ein 0x66-Byte vor den Befehl geklatscht wird. Unter DOS hätte das was gebracht, bei modernen Betriebssystemen nicht mehr. Früher war halt alles besser.
Programming from the Ground Up soll angeblich ein ganz gutes (freies) Buch sein. Eine Einführung ins Programmieren. Mit Assembler unter Linux.
@HWK: Das spart kein Byte weils ein 16-Bit-MOV im 32-Bit-Modus ist und deshalb ein 0x66-Byte vor den Befehl geklatscht wird. Unter DOS hätte das was gebracht, bei modernen Betriebssystemen nicht mehr. Früher war halt alles besser.
Stimmt!BlackJack hat geschrieben:@HWK: Das spart kein Byte weils ein 16-Bit-MOV im 32-Bit-Modus ist und deshalb ein 0x66-Byte vor den Befehl geklatscht wird. Unter DOS hätte das was gebracht, bei modernen Betriebssystemen nicht mehr. Früher war halt alles besser.
Da wird einmal mehr das unglückliche Design der x86-Prozessoren deutlich.
Edit @BlackJack: Wäre aus demselben Grund dann z.B. in Zeile 42
Code: Alles auswählen
mov ecx, eax
@HWK: Stimmt, Danke! Das ``lea`` war auch unnötig komplex und beim "exit" habe ich ein ``mov eax, 1`` vergessen "kürzer" zu schreiben. Nun ist der Code-Teil auf 94 Bytes runter.
http://paste.pocoo.org/show/28484/
http://paste.pocoo.org/show/28484/
Warum werden eigentlich die Semikolonse (;)) verwendet und keine Zeilenumbrüche? Wenn man von Newlines ausgeht, sind die auch nur ein Byte groß, aber der Code ist wesentlich lesbarer (wenngleich er sich natürlich in der Vertikalen über mehr Zeilen erstreckt).BlackJack hat geschrieben:Ist sogar etwas kürzer (in Zeichen) als die letzte Version mit der "statischen" Liste.Code: Alles auswählen
import sys;w=sys.stdout.writelines;w('P3 90 60 1 ');N=[45-int((324-y*y)**.5) for y in range(18)]+[45]*12;w('1 %d %d '%(x,x) for x in sum(([1]*n+[0]*(45-n)*2+[1]*n for n in N[::-1]+N),[]))
Es ging hier nicht um lesbar, sondern ob Japaner das Ding als E-Mail-Signatur verwenden können.
("Newlines" zähle ich übrigens bei den Längenangaben immer mit)
("Newlines" zähle ich übrigens bei den Längenangaben immer mit)
Und weil es soviel Spaß macht:BlackJack hat geschrieben:@HWK: Stimmt, Danke! Das ``lea`` war auch unnötig komplex und beim "exit" habe ich ein ``mov eax, 1`` vergessen "kürzer" zu schreiben. Nun ist der Code-Teil auf 94 Bytes runter.
http://paste.pocoo.org/show/28484/
Zeile 32, 55 und 69 zu
Code: Alles auswählen
inc ebx
Code: Alles auswählen
inc eax
Code: Alles auswählen
mov edx,eax
inc edx
inc edx
Code: Alles auswählen
add eax,ecx
Mit push/pop auf das 32-Bitregister sind's nochmal zwei Byte weniger = 87 Bytes Code.
http://paste.pocoo.org/show/28606/
http://paste.pocoo.org/show/28606/