Kurzer Prozess: Size Contest bei SPOJ

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Beitragvon HerrHagen » Sonntag 22. Februar 2009, 16:24

So, die 53 steht da...
Ab jetzt wirds schwer...
Mich würde mal der Ansatz von fxr interessieren. Sein Programm läuft viel länger. Er muss einen anderen Weg gegangen sein.

MFG HerrHagen
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Sonntag 22. Februar 2009, 16:31

HerrHagen hat geschrieben:So, die 53 steht da...


Du machst mir Angst ... :wink:
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

Beitragvon Craven » Sonntag 22. Februar 2009, 18:15

Perl ist schon ein bisschen extrem, oder? Mit 24 Zeichen ...

Code: Alles auswählen

q = 'q = %s; print q %% repr(q)'; print q % repr(q)
DasIch
User
Beiträge: 2402
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Sonntag 22. Februar 2009, 18:26

Perl ist ja auch nur ein Synonym für line noise :twisted:
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Beitragvon hendrikS » Montag 23. Februar 2009, 01:35

BlackJack hat geschrieben:Sooo, nun habe ich auch eine 54 Byte-Lösung.


Ich hab jetzt auch eine. 53.

Code: Alles auswählen

# Code auf Wunsch von numerix und HerrHagen entfernt
Zuletzt geändert von hendrikS am Montag 23. Februar 2009, 12:00, insgesamt 1-mal geändert.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Montag 23. Februar 2009, 06:19

hendrikS hat geschrieben:
BlackJack hat geschrieben:Sooo, nun habe ich auch eine 54 Byte-Lösung.


Ich hab jetzt auch eine. 53.


Gratuliere!!!

Ich denke, es wäre allerdings im Sinne von SPOJ, wenn du den Code hier wieder entfernen würdest, weil ansonsten damit zu rechnen ist, dass in nächster Zeit eine Reihe von 53-Byte-Lösungen bei SPOJ eingeschickt werden (die zufällig völlig identisch mit deinem Code sind) und so das Ranking verfälschen.

Ich bin dir natürlich dankbar für den Code, weil er zumindest einen "Trick" enthält, der mir bisher nicht eingefallen ist und vielleicht ja auch für andere Aufgabenstellungen mal einsetzbar ist.

Jetzt muss ich mal sehen, wie ich damit umgehe, dass ich nun keine eigene bessere Lösung mehr entwickeln kann (mein derzeitiger Stand waren 59 Bytes), ohne von deinem Code zu profitieren ... :cry:

@HerrHagen: Was die 53 Bytes von fxr angeht, so vermute ich, dass er mit "re" gearbeitet hat. Der etwas erhöhte Speicherbedarf spricht für einen import, die Geschwindigkeit deutet auf "re" hin ... :wink:
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Montag 23. Februar 2009, 06:29

numerix hat geschrieben:Jetzt muss ich mal sehen, wie ich damit umgehe, dass ich nun keine eigene bessere Lösung mehr entwickeln kann (mein derzeitiger Stand waren 59 Bytes), ohne von deinem Code zu profitieren ...


Ich denke, ich habe einen Weg gefunden; die eine Sache, die deinen Code von meinem unterschied, war mir gestern abend auch noch eingefallen, aber die Idee, die den Code so richtig kurz macht, wäre mir im Leben nicht eingefallen. Damit loche ich mit 58 Bytes ein ...
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Beitragvon HerrHagen » Montag 23. Februar 2009, 11:51

@hendrikS: bitte Code entfernen, sonst ist es ja kein Rätsel mehr!

@numerix: Meine Lösung ist die selbe wie bei hendirkS.
Mittlerweile glaub ich das fxr auch keine andere Lösung hat. Schau dir das Einsendedatum der Lösungen mit 0.1x sek. Laufzeit an. Die sind alle von 2006 oder älter. Vielleicht haben die bei SPOJ ja da ihr Computersystem verändert, aber die Programme nicht neu laufen lassen?
Ich glaube nicht daran, dass es noch eine andere Variante gibt die ebenfalls so kurz (oder kürzer) ist. Solange man re bei Python importieren muss, wird eine solche Lösung kaum kürzer sein. (Eine Idee wäre noch alle TDLF durch 2* zu ersetzen und das auszuführen, so dass print 2*2*2 dasteht).

MFG HerrHagen
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Beitragvon hendrikS » Montag 23. Februar 2009, 11:59

hendrikS hat geschrieben:
BlackJack hat geschrieben:Sooo, nun habe ich auch eine 54 Byte-Lösung.


Ich hab jetzt auch eine. 53.

Code: Alles auswählen

# Edit: code auf Wunsch von numerix und HerrHagen entfernt
Benutzeravatar
Blade Runner
User
Beiträge: 21
Registriert: Montag 23. Februar 2009, 11:41

Beitragvon Blade Runner » Montag 23. Februar 2009, 12:15

So, der erste Beitrag. :)

Als Gast hab ich schon öfter hereingeschaut, allerdings hab ich leider erst gestern diesen Thread gefunden.
Ich hab mich schon an Aufgaben bei SPOJ versucht, aber ich glaube, dass es viel mehr Spaß macht, sie hier zu diskutieren; vor allem, da man mehr lernt, denke ich.

Jedenfalls würde ich da gerne dran teilnehmen, sobald ihr eine neue Aufgabe anfangt. :)

Gruß, BR
Nocta
User
Beiträge: 290
Registriert: Freitag 22. Juni 2007, 14:13

Beitragvon Nocta » Montag 23. Februar 2009, 13:33

Blade Runner hat geschrieben:Jedenfalls würde ich da gerne dran teilnehmen, sobald ihr eine neue Aufgabe anfangt. :)

Schlag doch eine vor ;)
Die Lösung zu KAMIL würde mich schon interessieren, ich bin noch auf dem Stand, dass ich keine Idee habe, wie man Blackjacks (hier veröffentlichten) Code verkürzen kann :( Naja ich glaub ich geb mich bei der Aufgabe mal geschlagen und bei den anderen kann ich's vermutlich auch gleich sein lassen :D
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Montag 23. Februar 2009, 13:35

Blade Runner hat geschrieben:Ich hab mich schon an Aufgaben bei SPOJ versucht, aber ich glaube, dass es viel mehr Spaß macht, sie hier zu diskutieren; vor allem, da man mehr lernt, denke ich.

Jedenfalls würde ich da gerne dran teilnehmen, sobald ihr eine neue Aufgabe anfangt. :)


Hallo Blade Runner, willkommen im Forum!

Eine Aufgabe, an der möglicherweise z.Zt. noch von Forumsteilnehmern gearbeitet wird, ist PRIME1 - dazu gibt es einen eigenen Thread im Forum: http://www.python-forum.de/topic-17696.html. Ob HerrHagen noch dran ist, weiß ich nicht - falls ja, bin ich meine Python-Pole wahrscheinlich bald los ... :wink:

Das mit dem daraus Lernen ist natürlich so eine Sache, weil man das Posten von lauffähigem Code, der bei SPOJ auf den vorderen Plätzen mitspielt, aus Gründen der Fairness eher lassen sollte, um die Wettbewerbsbedingungen von SPOJ nicht unnötig zu verzerren, weil es - so vermute ich mal - Menschen gibt, denen ihr Ranking da viel bedeutet und die hart arbeiten, um in der Weltrangliste weit vorne zu stehen.

Und die genialsten Kniffe (zumindest das, was man dafür hält) im eigenen Code will man vielleicht ja auch nicht preisgeben, weil man es anderen dadurch evtl. zu leicht macht, eine mindestens ebenso gute (d.h. bei SPOJ: kürzere oder schnellere) Lösung zu finden.

Auf jeden Fall macht es aber mehr Spaß, wenn eine gewisse Art von lebendiger Kommunikation um das Lösen einer Aufgabe herum vorhanden ist. Und da hat das deutsche Python-Forum - nicht nur was die Lebendigkeit angeht - gegenüber dem SPOJ-Forum die Nase weit vorn ... :)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Montag 23. Februar 2009, 13:45

Nocta hat geschrieben:Die Lösung zu KAMIL würde mich schon interessieren, ich bin noch auf dem Stand, dass ich keine Idee habe, wie man Blackjacks (hier veröffentlichten) Code verkürzen kann :( Naja ich glaub ich geb mich bei der Aufgabe mal geschlagen und bei den anderen kann ich's vermutlich auch gleich sein lassen :D


Ich finde es nicht so tragisch, wenn man nicht mit der besten Lösung aus dem Rennen geht. Dass es überhaupt gelingt, jahrealte Bestmarken von Programmieren, die - nachdem, was man bei SPOJ über sie herausbekommen kann - wirklich was auf dem Kasten haben, mit ein paar Stunden Beschäftigung zu knacken, hat doch schon was.

Und dass ich z.B. bei KAMIL jetzt 1 Byte weniger geschafft habe als Tim Peters himself - da bin ich schon ein bisschen stolz :D (wobei ich mal schätze, dass Tim Peters wahrscheinlich keine Stunden bräuchte, um seine bisherigen 59 Bytes kürzer zu bekommen, wenn er wirklich wollte).

Außerdem gibt es ja außer dem Code Golf auch noch haufenweise anständige Aufgaben bei SPOJ, an denen man sich die Zähne ausbeißen kann und wo eine akzeptierte Lösung als solche schon ein Erfolg ist.
Benutzeravatar
Blade Runner
User
Beiträge: 21
Registriert: Montag 23. Februar 2009, 11:41

Beitragvon Blade Runner » Montag 23. Februar 2009, 15:29

numerix hat geschrieben:Hallo Blade Runner, willkommen im Forum!

Danke. :)

numerix hat geschrieben:Das mit dem daraus Lernen ist natürlich so eine Sache, weil man das Posten von lauffähigem Code, der bei SPOJ auf den vorderen Plätzen mitspielt, aus Gründen der Fairness eher lassen sollte, um die Wettbewerbsbedingungen von SPOJ nicht unnötig zu verzerren, weil es - so vermute ich mal - Menschen gibt, denen ihr Ranking da viel bedeutet und die hart arbeiten, um in der Weltrangliste weit vorne zu stehen.

Das stimmt natürlich. Aber wenn man sich einen Platz unter den vorderen Rängen erschleicht, indem man einfach jemandes Code kopiert, dann sollte man sich Gedanken machen, wieviel einem das bringt.

Nocta hat geschrieben:Schlag doch eine vor

Wenn wir bei Codegolf bleiben möchten, gäbe es Codegolf.com.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Montag 23. Februar 2009, 16:01

Blade Runner hat geschrieben:Aber wenn man sich einen Platz unter den vorderen Rängen erschleicht, indem man einfach jemandes Code kopiert, dann sollte man sich Gedanken machen, wieviel einem das bringt.


Es bringt einem zumindest Punkte in der SPOJ-Rangliste ...

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder