[PHP] Coding-Competition - Vorüberlegungen

tleilax

be forever curious
ID: 27936
L
20 April 2006
1.845
184
Moinsen,

da das Thema im alten Forum ja auch schon mal besprochen wurde, wollte ich mal nachhaken, ob sich hierfür immer noch Teilnehmer finden würden.

Eine Aufgabenstellung hätte ich schon fast vollständig ausgearbeitet. Diese wäre mit PHP-Hausmitteln und wenig HTML/CSS-Kenntnissen durchaus lösbar und soll ohne den Einsatz externer Libraries (ausser den in PHP im Allgemeinen verankerten) gelöst werden.

Da es immer eine schwierige Frage ist, wie man die einzelnen Codes bewertet, habe ich mir eine Problemstellung gesucht, die das Problem recht elegant umgeht. Es geht um eine Konvertierung und das kleinste Endergebnis (nicht vom Code, sondern von der Ausgabe) zählt. Ob Faktoren, die den Code bewerten würden, einspielen sollen/werden, muss ich mir noch überlegen bzw darf hier gerne diskutiert werden. Ich werde allerdings keine "je weniger Zeilen, desto besser"-Regelung akzeptieren. Vielmehr wäre das sinnvolle Anwenden von entsprechenden Funktionen, die generelle Struktur und evtl die Formatierung von Interesse. Die Validität des ausgegebenen Codes ist aber definitiv ein Kriterium. Genauso wie ein beweisbarer Fall von Codeklau (egal von woher) ein Ausschlusskriterium ist. Wer nicht selber codet und fremden Code als seinen verkaufen will, fliegt raus!

Das Rating wäre dann folgendermassen:

Ausgehend von einer Ausgangsgrösse der Konvertierung (nicht unbedingt Worst Case, aber definitiv ein Bad Case) wird der Prozentsatz der Veränderung genommen, sprich:
Code:
131.072 Byte Ausgangsgrösse
032.768 Byte erreichte Größe
-----------------------------
25% des Ausgangscodes
Dies wäre der eigentliche Entscheidungsfaktor. Je kleiner der erreichte Prozentsatz, desto höher ist das Ranking.

Wenn der ausgegebene Code nicht valide ist, werden auf das Ergebnis 10%
draufaddiert. Allerdings nicht, dass später 35% rauskommen, sondern folgendermassen (weiss grad nicht, wie man das vernünftig ausdrückt):
Code:
25 + 10% von 25 = 25 * 1,1 = 27,5
Wenn weitere Faktoren ausschlaggebend sein sollten, würde ich ggf weitere Prozente draufschlagen oder abziehen - natürlich mit Begründung.

Und grade wegen dieser Begründung bräuchte ich noch mindestens einen weiteren Juroren, der nicht an der Compo teilnimmt, sondern mir hilft, die Entscheidungen zu treffen. Diese Person(en) sollte(n) selbstverändlich von Euch als dafür fähig angesehen werden und würde(n) zusammen mit mir die Compo leiten.

Der Ablauf des Ganzen wäre wie folgt:

Es wird bekannt gegeben, wann die Compo startet (das wäre 7 Tage vor Beginn der Compo). Innerhalb dieser 7 Tage ist eine Anmeldung zur Compo möglich. Anschliessend startet die Compo mit einer Laufzeit von 3 Tagen und einer strikten Deadline, indem die Aufgabenstellung bekanntgegeben wird und eventuelles benötigtes Material bereitgestellt wird. Danach ticken 72 Stunden ausgehend von der Postzeit der Aufgabenstellung.

Eine Anmeldung ist nur aus dem Grund nötig, um die Teilnehmerzahl abschätzen zu können. Es kann auch während der Compo noch spontan teilgenommen werden, aber ich behalte mir vor, dies mit "Straf"prozenten zu ahnden, wenn es zuviele Teilnehmer zusätzlich werden sollten.

Damit sollte der generelle Rahmen der Compo gesteckt sein. Preise wird es momentan nicht geben, da es mehr eine Compo just 4 fun sein sollte und bei sowas oft der "Schwanzvergleich"-Faktor Preis genug ist. ;)
Wenn sich allerdings Sponsoren für Preise finden sollten, steht einer Preisvergabe nichts im Wege, aber es sollte nicht der Anreiz für die Teilnahme sein.

Jetzt bin ich mal gespannt, was Ihr davon haltet und würde mich über Resonanz freuen.
 
deine Idee ist ganz ok, aber 1 Aufgabe ist etwas wenig.
Und zudem findet gerade der BWINF und in Thüringen (meine ich doch) noch nen Wettbewerb, da haben viele schon nen andren Wettbewerb vor sich
 
Ich will ja keinen grossangelegten Wettbewerb machen. Wie gesagt, es ist just4fun und da ist eine Aufgabe in meinen Augen vollkommen ausreichend. Zumal ich befürchten würde, dass bei mehr Aufgaben auch weniger Teilnehmer zu erwarten wären.

Wenn's gut läuft, kann man ja immer noch andere Compos hinterherschieben. Dann ist diese erstmal nur als Initialstiftung gedacht. ;)

Ausserdem glaub ich, dass man an der gestellten Aufgabe schon genug zu optimieren hat für 72 Stunden. Wobei ich noch nicht genau weiss, ob ich Zwischenstände posten würde. Wäre aber bestimmt ganz interessant, um sich gegenseitig anzuheizen. :)
 
Darf man fragen in welche Richtung die Aufgabe geht?
Also mehr sowas wie BWInf (also recht Mathematisch, algorithmisch, wobei da html und css keine Rolle spielen würde) oder etwas "praktischeres".
Naja wenn es interessant ist, würde ich wohl vielleicht mitmachen (auch wenn ich mit meiner Diplomarbeit eigentlich ausgelastet bin).

MfG respawner
 
Also es geht mehr um was Praktisches, wobei aber vermutlich auch nicht grad unkomplexe Algorithmen zur Optimierung angewandt werden müssten, um zu einem guten Ergebnis zu kommen.
 
Ich hab jetzt noch nicht ganz verstanden, was das Gewinnkriterium wäre und bin im Moment zu faul mir das nochmal durchzulesen :D
Deswegen frage ich mal: Allein die Codegrösse eines validen Codes? Richtig verstanden?

Also, ich würde teilnehmen (da ja auch nicht jeder am bwinf teilnehmen kann/darf). Da hättet ihr aber richtig daran zu kauen :D *angeb*
 
Nicht ganz. Du erzeugst in dem PHP-Skript Output und die Größe davon ist das ausschlaggebende Kriterium. Inwieweit noch in geringem Masse weitere Faktoren eine Rolle spielen, weiss ich noch nicht ganz genau.
 
Eigentlich schon, aber es ist dann eine Frage der Auswertung. Ich muss ja alle Programme/Skripte testen, ob sie auch wirklich die Funktionalität ausführen, die gewünscht ist. Und da ich wenig Lust habe, für alle Eventualitäten hier die Compiler/Umgebungen aufzusetzen, wäre es das Einfachste, sich auf PHP zu beschränken. Zumal es wohl auch die gängigste Sprache hier im Forum sein wird und ich dort am schnellsten überschauen kann, was ein Code wohl so macht.

Aber um welche Sprache würd's denn gehen? Dann kann ich dazu auch genaueres sagen...
 
ich würde mal stark vermuten, dass Veers gerne in Ruby basteln möchte.
Das Prob ist nur, wenn du erstmal eine andere Sprache zulässt, werden weitere kommen und möchten Delphi/C(++)/VB etc
 
Naja ne Compilersprache wär ja in dem Fall einfacher weil du nur das Binary bekommst. Ausführen und läuft oder eben auch nicht. Bei nem Script sieht es da schon nen bisschen anders aus.
 
Das finde ich aber ziemlich blöd, wenn der Code nicht gewertet wird, sondern nur die Ausgabe... das ist dann gar kein richtiger Coding-Wettbewerb.

Ich würde jedoch empfehlen, das ganze auf eine Sprache zu beschränken.

Oooh ... schon sooo spät ... :yawn:
Ich schreib morgen dann weiter :)
 
Das Problem ist, dass hier viel PHP "Programmierer" rumlaufen. Sprich die Wahlfällt auf PHP. Nun ist es aber leider so, dass von den Vielen hier nur sehr wenige wirklich wissen was sie tun und davon noch mal viel weniger wollen an dem Wettbewerbteilnehmen. Bei den anderen Sprachen ist es nicht ganz so extrem weil da nicht soviele "Moechtegern-Hacker" unterwegs sind. Letztendlich muss man aber auch davon die "viel Weniger" nehmen, die teilnehmen wollen ... die Zahl wird also so schon sehr beschraenkt sein.

Um das ganze "fairer" zu gestalten koennte man natuerlich sowas wie Benchmarks einfuehren. Die Compilersprachen haben hier natuerlich wieder Vorteile. Richtig waer es auch sowas wie die "Entwicklungszeit" zu betrachten und die Zahl der Builds bis zum "stabilen" Produkt aber da wird so leicht geschummelt, dass das unmöglich ist. Ich persoenliche finde die Idee das Endergebnis zu bewerten irgendwie mal was neues. Normal wird auf den Code wert gelegt und nur kontrolliert ob das Ergebnis stimmt ... normal ist das richtig aber hier koennte man sich mal an effizienz des Ergebnisses versuchen und nicht an "optimalem Lehrbuch Code" ( den wir ja sowieso alle schreiben ).
 
Ich hätte mehr an sowas wie C oder ASM gedacht. Ansonsten, wenn die Script Sprachen eine zu hohe ausführungs Zeit haben ist das ned das Problem der Compo. Zur Entwicklungszeit, die ist durch den Zeitraum der Compo begränzt. Das muss reichen. Ob jemand 8 Stunden braucht um etwas in ASM zu bauen oder ein ander 8 Stunden in die Optimierung seines Scripts setzt, seine Entscheidung.
 
Das Prob ist nur, wenn du erstmal eine andere Sprache zulässt, werden weitere kommen und möchten Delphi/C(++)/VB etc
Genau das denke ich auch und in meinen Augen wird's dann irgendwann unübersichtlich. Grade auch dann, wenn man nach Ende der Compo vergleichen will, wie andere das Problem angegangen sind. Ich fänd's einfacher, dann nur eine Sprache lesen zu müssen als mehrere verschiedene.

Naja ne Compilersprache wär ja in dem Fall einfacher weil du nur das Binary bekommst. Ausführen und läuft oder eben auch nicht. Bei nem Script sieht es da schon nen bisschen anders aus.
Naja, das Argument hinkt. Wer sagt mir denn, dass die Binary auch genau das tut, was der mir vorliegende Code behauptet? Genausogut könnte auch einfach eine URL ausgelesen werden und mir das fremde Ergebnis als eigenes präsentiert werden. Klar, kann auch in Skripten passieren, aber da kann ich es einfacher entdecken. Und da ich im ersten Beitrag schon drauf hingewiesen habe, dass die Aufgabe mit PHP-Hausmitteln und ohne Einsatz externer Libs gelöst werden soll, sollte die Ausführbarkeit kein Problem darstellen. Wobei es nach meiner bisherigen Planung eh so wäre, dass kein komplettes Skript als Lösung gefordert wird, sondern "nur" das Erstellen einer Funktion mit fest definierten Ein- und Ausgabeparametern.

Das finde ich aber ziemlich blöd, wenn der Code nicht gewertet wird, sondern nur die Ausgabe... das ist dann gar kein richtiger Coding-Wettbewerb.
Nunja, das sehe ich anders. Es zählt im Endeffekt die Art und Weise, wie man das Problem angegangen ist und Wege zur Optimierung eines selbst erstellten Codes gefunden hat.
Zum anderen möchte ich mich nicht drauf einlassen, den Programmierstil anderer Leute zu bewerten. Ich würde mir zutrauen, eine Klassifizierung wie "gut", "mittel" oder "schlecht" vorzunehmen, aber das reicht für die Beurteilung während eines Wettbewerbs nicht aus. Alles, was über diese 3 Beurteilungen hinaus geht, wäre mir zu subjektiv. Da begebe ich mich lieber auf die sichere Seite, indem ich objektiv das Resultat bewerten anhand harter Fakten.

Aber wie gesagt, ich bin durchaus gewillt, weitere Faktoren in Form von Plus- oder Minusprozenten Einfluss nehmen zu lassen. Diese würde ich vorher klar definieren und bin an dieser Stelle gerne zu jeder Form der Diskussion über mögliche Faktoren bereit.

Um das ganze "fairer" zu gestalten koennte man natuerlich sowas wie Benchmarks einfuehren. Die Compilersprachen haben hier natuerlich wieder Vorteile.
Bin ich in diesem Fall absolut dagegen. Es geht nicht um Ausführgeschwindigkeit, sondern einzig und allein um das Resultat. Und da ich mich ja eigentlich auf PHP festgelegt hatte, ist das Benchmarken mir ein zu schwammiger Faktor, als dass er Einfluss nehmen könnte. Meiner Meinung nach bieten sich Benchmarks eher da an, wo es um das Umsetzen eines definierten Algorithmus' geht, nicht aber dort, wo es darum geht, selber einen zu entwickeln.

Ich hätte mehr an sowas wie C oder ASM gedacht.
Ich glaube nicht, dass Dir C oder ASM in diesem Fall viele Vorteile bieten würden. Die Aufgabe ist mit dem Einsatz relativ weniger Funktionen lösbar.

Schlussendlich möchte ich sagen, dass ich die Compo gerne auf "PHP only" beschränken würde. Meine Aufgabe, die mir vorschwebt, ist keine allzu komplexe, aber auch nicht grade trivial, wenn man das Optimieren des Endergebnisses betrachtet. Aber definitiv ist PHP dafür ziemlich gut geeignet. Und wie schon angemerkt wurde, ist PHP hier sehr weit verbreitet, die meisten Leute können zumindest nachvollziehen, was ein Code macht und insofern wäre es meine Wahl.

Da dies auch die erste Compo hier im Forum ist, betrachte ich's irgendwie auch als Testlauf. Hinterher können wir immer noch drüber diskutieren, ob und in welcher Form weitere Compos folgen können/werden.