Bei Code Golf geht es darum, vorgegebene Aufgaben zu lösen, aber im Gegensatz zu Seiten wie SPOJ muss man dies mit möglichst kleinen Programmen erreichen. D.h. Faktoren wie Arbeitsspeicherverbrauch, Ausführungszeit, etc. spielen keine Rolle.
Zugelassen sind 4 Sprachen: Perl, Php, Ruby und Python.
Ich werde mich mal dran versuchen, aber meine Code-Obfuscating-Fähigkeiten sind eher mager.
Gruß, Craven
Code Golf
- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Cravens Signatur hat geschrieben:Code: Alles auswählen
q = "q = %s; print q %% `q`"; print q % `q`
Code: Alles auswählen
>>> q = "q = %s; print q %% `q`"; print q % `q`
q = 'q = %s; print q %% `q`'; print q % `q`
>>> q
'q = %s; print q %% `q`'
>>> print q
q = %s; print q %% `q`
Ah, jetz verstehe ich was er gemeint hat.
Naja, es ist mehr ein Pseudoquine, da die " als ' ausgegeben werden.
Das schweift aber etwas vom Thema ab.
Gruß, Craven
Naja, es ist mehr ein Pseudoquine, da die " als ' ausgegeben werden.
Code: Alles auswählen
>>> q = "q = %s; print q %% `q`"; print q % `q`
q = 'q = %s; print q %% `q`'; print q % `q`
Gruß, Craven
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
Das geht natürlich.BlackJack hat geschrieben:Naja, dann änder halt die " im Quelltext in ' um.
Mir gefallen da nur die ` nicht; wenn ich stattdessen ' schreibe, muss ich die " am Anfang stehen lassen oder es gibt einen Fehler aus, da der String dann als zu Ende betrachtet wird.
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
Häh? Wenn man einfach die beiden " durch ' ersetzt, ändert sich doch sonst an dem Programm nichts:
Wenn Du die Backticks nicht magst, kannst Du sie durch `repr()` ersetzen. Dann ist das Quine zwar nicht mehr so kurz, aber zukunfstsicherer, da die Backticks in Python 3.0 wegfallen werden.
Code: Alles auswählen
In [95]: q = 'q = %s; print q %% `q`'; print q % `q`
q = 'q = %s; print q %% `q`'; print q % `q`
Code: Alles auswählen
In [96]: q = 'q = %s; print q %% repr(q)'; print q % repr(q)
q = 'q = %s; print q %% repr(q)'; print q % repr(q)
Das habe ich gemeint, auf repr() bin ich nicht gekommen. Danke.BlackJack hat geschrieben:Wenn Du die Backticks nicht magst, kannst Du sie durch `repr()` ersetzen. Dann ist das Quine zwar nicht mehr so kurz, aber zukunfstsicherer, da die Backticks in Python 3.0 wegfallen werden.
Code: Alles auswählen
In [96]: q = 'q = %s; print q %% repr(q)'; print q % repr(q) q = 'q = %s; print q %% repr(q)'; print q % repr(q)
Zu Code Golf:
Im Prinzip ist Python doch eher ungeeignet dafür, ausser man benutzt lambda, List Comprehensions, etc. um die 'normale' Syntax zu umgehen.
Zumindest schaffe ich es nicht, meinen Code auf andre Weise nennenswert kürzer zu machen.
Was meint ihr?
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
Naja, das ist ja der Sinn von Code Golf, dass ganze so unleserlich kurz wie möglich zu machen.