Seite 5 von 7

Verfasst: Sonntag 22. Februar 2009, 16:24
von HerrHagen
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

Verfasst: Sonntag 22. Februar 2009, 16:31
von numerix
HerrHagen hat geschrieben:So, die 53 steht da...
Du machst mir Angst ... :wink:

Verfasst: Sonntag 22. Februar 2009, 18:15
von Craven
Perl ist schon ein bisschen extrem, oder? Mit 24 Zeichen ...

Verfasst: Sonntag 22. Februar 2009, 18:26
von DasIch
Perl ist ja auch nur ein Synonym für line noise :twisted:

Verfasst: Montag 23. Februar 2009, 01:35
von hendrikS
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

Verfasst: Montag 23. Februar 2009, 06:19
von numerix
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:

Verfasst: Montag 23. Februar 2009, 06:29
von numerix
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 ...

Verfasst: Montag 23. Februar 2009, 11:51
von HerrHagen
@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

Verfasst: Montag 23. Februar 2009, 11:59
von hendrikS
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

Verfasst: Montag 23. Februar 2009, 12:15
von Blade Runner
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

Verfasst: Montag 23. Februar 2009, 13:33
von Nocta
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

Verfasst: Montag 23. Februar 2009, 13:35
von numerix
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 ... :)

Verfasst: Montag 23. Februar 2009, 13:45
von numerix
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.

Verfasst: Montag 23. Februar 2009, 15:29
von Blade Runner
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.

Verfasst: Montag 23. Februar 2009, 16:01
von numerix
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 ...

Verfasst: Montag 23. Februar 2009, 16:42
von hendrikS
numerix hat geschrieben: Es bringt einem zumindest Punkte in der SPOJ-Rangliste ...
Genau. Habe jetzt schon 0.5 Punkte by SPOJ und Platz 3816. :)

Verfasst: Dienstag 24. Februar 2009, 01:22
von HerrHagen
Bei der Gelegenheit will ich noch mal auf https://www.spoj.pl/problems/SIZECON/ hinweisen. Der Wettbewerb ist wirklich klasse! Ich hab mich jetzt ein paar Stunden dran probiert und muss sagen, dass das mit Abstand der beste Code-Golf ist den ich je gesehen hab. Das Problem ist viiieelll vertrackter als man zunächst denkt...

MFG HerrHagen

Verfasst: Dienstag 24. Februar 2009, 02:00
von BlackVivi
Fass es nich wie's einer in 29 Zeichen schafft oO' Ich schaffs nichmal in 29 Zeichen das Zeug einzulesen in einer Datenstruktur...

Verfasst: Dienstag 24. Februar 2009, 02:32
von DasIch
@BlackVivi Wofür braucht man da eine Datenstruktur?

Ich komme jetzt auf 59 dass ist immer noch 30 Zeichen mehr als die beste Lösung :/

btw. Wieso sind negative Zahlen eigentlich True?

Verfasst: Dienstag 24. Februar 2009, 04:53
von BlackVivi
DasIch hat geschrieben:@BlackVivi Wofür braucht man da eine Datenstruktur?

Ich komme jetzt auf 59 dass ist immer noch 30 Zeichen mehr als die beste Lösung :/

btw. Wieso sind negative Zahlen eigentlich True?
Weil absolut alles außer 0, None und einer leeren Liste True ist. (vorrausgesetzt es ist nichts eigenes implementiert)

59 Zeichen ist auch mein bestes. Man braucht nicht zwangsweise eine Datenstruktur, aber ohne wirds doch viel zu lang. Ich denke mit dynamischer Codeerstellung (exec und so) wird's kürzer. Aber im Moment fehlt mir noch ein kurzer Gedanke, negative Zahlen zu überspringen.