Seite 6 von 7

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.

Verfasst: Dienstag 24. Februar 2009, 06:53
von numerix
HerrHagen hat geschrieben:Bei der Gelegenheit will ich noch mal auf https://www.spoj.pl/problems/SIZECON/ hinweisen.
Auf die 34 Bytes kannst du wir wahrhaftig was einbilden!

Es gibt einen langen Thread im SPOJ-Forum, in dem Tim Peters und ein paar andere ihr Ringen um die beste Lösung darstellen und es mit viel Arbeit auf 37 Bytes geschafft haben. Ich habe mich in den letzten Tagen so nach und nach auf 43 Bytes vorgearbeitet und bin schon ganz glücklich darüber, dass ich es wenigstens bis auf die erste Seite im Python-Ranking geschafft habe. Aber wenn du jetzt einige andere hier im Forum noch infizierst, dann ist's damit wohl auch bald vorbei ... :cry:

Verfasst: Dienstag 24. Februar 2009, 10:39
von Leonidas
DasIch hat geschrieben:btw. Wieso sind negative Zahlen eigentlich True?
Zum Beispiel damit nicht einige auf die Idee kommen -1 als Fehler-Rückgabewert zu verwenden, da das ja False wäre und man es prüfen könnte. Stattdessen besser Exceptions.

Verfasst: Dienstag 24. Februar 2009, 20:18
von HerrHagen
Ahh..., mindestens 7 Personen aus diesen Forum beteiligen sich schon mal am Rätseln. Sehr schön...
Wer verbirgt sich hinter bords0?
Aber wenn du jetzt einige andere hier im Forum noch infizierst, dann ist's damit wohl auch bald vorbei ... Crying or Very sad
@numerix: Du hast ja noch genug Wettbewerbe in denen du auf Platz eins bist :wink:. (Hab leider im Moment wenig zeit, sonst würd ich mich ja mal an PRIME ranmachen :lol:).

MFG HerrHagen

Verfasst: Dienstag 24. Februar 2009, 20:36
von Nocta
HerrHagen hat geschrieben:Ahh..., mindestens 7 Personen aus diesen Forum beteiligen sich schon mal am Rätseln. Sehr schön...
Wer verbirgt sich hinter bords0?
Ich würde mal stark annehmen, bords0 verbirgt sich dahinter ;) Ist auch ein User aus dem Forum, hat sogar schon in diesem Thread geschrieben, afaik.
Ich bin auch dabei, komm aber nicht unter 51 Byte mit einem print sum(generator(bla
  • bla) :(
    Ich find's schon blöd, dass niemand seinen Code veröffentlichen will bzw kann (was verständlich ist), weil ich dann nie die ganzen Tricks kennenlernen werde ;) Aber gut, mit 51 Byte kann ich mich eigentlich auch zufrieden geben, ich find die Lösung jedenfalls kurz :p

Verfasst: Dienstag 24. Februar 2009, 21:43
von HerrHagen
Ich würde mal stark annehmen, bords0 verbirgt sich dahinter
:oops: stimmt. ich hab n gedächtnis wie ein goldfisch... :oops:
Aber gut, mit 51 Byte kann ich mich eigentlich auch zufrieden geben, ich find die Lösung jedenfalls kurz :p
Nicht so schnell aufgeben!

Verfasst: Dienstag 24. Februar 2009, 21:49
von Nocta
HerrHagen hat geschrieben:Nicht so schnell aufgeben!
Ein Goldfisch als Personal Coach? :)
Ich geb ja gar nicht mal so schnell auf, aber wenn ich nicht weiterkomme, dann war's das halt :p Vielleicht sollte ich mir mal ein paar Seiten im Internet durchlesen, die Generator Expressions und List Comprehensions als Thema haben, eventuell find ich da irgendwelche Ideen.

Verfasst: Dienstag 24. Februar 2009, 21:52
von HerrHagen
Vielleicht sollte ich mir mal ein paar Seiten im Internet durchlesen, die Generator Expressions und List Comprehensions als Thema haben, eventuell find ich da irgendwelche Ideen.
Soviel kann man ja verraten: Die Lösung geht in eine andere Richtung. :wink:

Verfasst: Dienstag 24. Februar 2009, 22:14
von Nocta
Hm, hab ich mir fast schon gedacht =) Aber in anderen Richtungen fällt mir ja noch weniger ein! :p

Verfasst: Dienstag 24. Februar 2009, 22:36
von BlackJack
@Nocta: Nochmal die Aufgabe durchlesen, insbesondere die "komischen" Rahmenbedingungen.

Ich hab's noch nicht ausprobiert, aber ich denke ich könnte auf ca. 40 Bytes kommen, und wenn numerix wieder mal so ähnlich denkt wie ich, wüsste ich wahrscheinlich wo er noch drei Bytes "einsparen" kann. :-)

Verfasst: Dienstag 24. Februar 2009, 23:06
von Nocta
@BlackJack: Naja okay, aber ich weiß nicht, wie man das in Python einsetzen könnte. In Perl kann man's anscheinend so übertreiben, dass dann nur 6 Byte gezählt werden.
Ich bin wahrscheinlich einfach zu unkreativ oder ich kenne irgendwas an Python nicht, was man hier braucht oder es ist so abwegig (aber ihr kommt ja alle irgendwie drauf), dass kein normaler Mensch (ist das jetzt beleidigend? :p) drauf kommt. Oder aber es ist so einfach, dass jeder normale Mensch drauf kommt und ich mich ergo nicht zu solchen zählen kann. Wie auch immer, ich lass es einfach, es sei denn, mir fällt irgendwann mal zufällig mal ein genialer Trick (der euch nach 10 Sekunden einfällt) ein.
Vielleicht will mir ja jemand seinen Code per PN schicken, ich würde ihn dann selbstverständlich auch für mich behalten. Der Trick wie man auf <40 bytes kommt, würde mich jedenfalls interessieren.