PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie wäre es mit einem 3DCenter Programmierwettbewerb?


Gast_
2006-09-20, 00:25:35
Können wir mal einen Programmierwettbewerb hier im 3DCenter veranstalten?

darph
2006-09-20, 08:55:34
Können wir mal einen Programmierwettbewerb hier im 3DCenter veranstalten?Wenn du dich registrierst und bereit erklärst, das ordentlich aufzuziehen, dann ja.

MeLLe
2006-09-20, 09:11:32
Aber ist denn unser darph nicht per definitionem der Wettbewerbsausrichter schlechthin? :)

Gasti
2006-09-20, 09:41:28
Du meinst so etwas?
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=233603
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=244778
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=186542
usw. usw. usw.

Gast_
2006-09-20, 13:45:59
sry die frage, aber wie wird ein programmierwettbewerb bewertet? geht es da um die eleganteste lösung? *kratzkratz*

RaumKraehe
2006-09-20, 14:18:49
In dem Mann die Zielsetzung konkretisiert.

T.b. Schreibe ein Programm das dieses oder jenes Problem löst. Das Programm welches dabei am schnellsten ist hat gewonnen. Im Prinzip ganz einfach.

ethrandil
2006-09-20, 15:25:42
Oder der kürzeste Quellcode hrhr

Da ist wohl die einfachste Lösung, einen Compiler zu schreiben, der aus einer leeren Quellcode-Datei das gewünschte Programm erzeugt ;-)...

- eth

Gast_
2006-09-20, 15:49:51
Hängt sicherlich von der Aufgabenstellung bzw. Zielsetzung ab -
aber ist das schnellste Programm unbedingt das beste, gerade in der heutigen Zeit? Fraglich wie man das objektiv festhalten kann, aber beim Fotowettbewerb, z.B. hier im 3DCenter wird ja auch nicht das schärfste Foto gewinnen ;)

RaumKraehe
2006-09-20, 16:15:57
Stimmt. Eine Birne sieht ja auch wie ein Apfel aus. :|

Ich schrieb ja schon was von konkreter Aufgabenstellung. Und da gibt es unmengen von Bereichen in denen gerade die Geschwindigkeit der Maßstab ist. Was bringt es mir wenn der Code hübsch aussieht aber total uneffizient arbeitet?

Brillenschlange92
2006-09-20, 16:26:06
[gelöscht]

ethrandil
2006-09-20, 16:29:24
Wie wärs denn wenn man einfach eine Abstimmung macht, da kann man für ein Programm stimmen, und jeder stimmt wie er lustig ist, mit Begründung?

Aber erstmal sollte eine Aufgabe her......

mfg
- eth

Gast
2006-09-20, 16:57:29
Stimmt. Eine Birne sieht ja auch wie ein Apfel aus. :|

Ich schrieb ja schon was von konkreter Aufgabenstellung. Und da gibt es unmengen von Bereichen in denen gerade die Geschwindigkeit der Maßstab ist. Was bringt es mir wenn der Code hübsch aussieht aber total uneffizient arbeitet?was ich damit sagen wollte ist, dass die Effizienz des Codes, je nach zweck natürlich, nach heutigen maßstäben unter Umständen keine Rolle mehr spielt. Oder anders gesagt, warum sollte man maximal effizient programmieren, wenn eine bessere Nachvollziehbarkeit oder ein besserer Zugriff bzw. Wiederverwendbarkeit das Programm in Punkto handhabung aufwerten kann. Bsp: Was will ich mit Chaos-C++-Code den ich nicht verwenden kann, weil sich kein Mensch darin auskennt und die Zusammenhänge nicht gleich erkennbar sind. Vielleicht ist das hier auch zu praktisch gedacht.

Brillenschlange92
2006-09-20, 18:54:45
[gelöscht]

RaumKraehe
2006-09-20, 19:37:52
was ich damit sagen wollte ist, dass die Effizienz des Codes, je nach zweck natürlich, nach heutigen maßstäben unter Umständen keine Rolle mehr spielt. Oder anders gesagt, warum sollte man maximal effizient programmieren, wenn eine bessere Nachvollziehbarkeit oder ein besserer Zugriff bzw. Wiederverwendbarkeit das Programm in Punkto handhabung aufwerten kann. Bsp: Was will ich mit Chaos-C++-Code den ich nicht verwenden kann, weil sich kein Mensch darin auskennt und die Zusammenhänge nicht gleich erkennbar sind. Vielleicht ist das hier auch zu praktisch gedacht.

Ja, das ist es wohl. Zu Praktisch. Es soll ja nun mal ein Wettbewerb sein. Und ich denke, zumal die Aufgaben auch einfach sinnlos sein könnten, das die Zeit halt ein schöner Messfaktor für ein Wettbewerb ist.

Z.b. könnt man einen Komprimierungswettberwerb machen. Es wird eine Referenzdatei gestellt die so schnell wie möglich unter einen bestimmten Werte gepackt werden muss. Das könnte man auch erweitern und den Wert nicht vorgeben. Dann würde der Code gewinnen der am schnellsten am heftigsten packen kann.

Daraus könnte sogar ein weiterer nutzen enstehen. z.B. ein neues Archivierungsformat. ;)

Brillenschlange92
2006-09-22, 14:15:36
[gelöscht]

gentoo
2006-09-22, 14:44:29
Ich hätte da einen Vorschlag.
Wie wärs, wenn das Programm einen Weg durch ein 2-dimensionales Labyrinth
finden muss.

Das Programm, dass den kürzesten Weg findet gewinnt.
Zusätzlich kann man natürlich auch auf verschiedene Programmiersprachen eingehen, so dass es eine Bewertung gibt welches Programm
in seiner Programmiersprache den kürzesten Weg in der schnellsten Zeit
findet.

Abzugeben ist natürlich immer der Source, da der Output eines Intelcompilers mit
Optimierungen schneller ist als z.B.: der Output vom gcc ohne Optimierungen.

ethrandil
2006-09-22, 14:50:46
Das ist aber schon ein recht einfaches Problem.
Schneller als einfache Breiten-/ Tiefensuche wirds nicht gehen.

mfg
- eth

gentoo
2006-09-22, 15:17:05
Das ist aber schon ein recht einfaches Problem.
Schneller als einfache Breiten-/ Tiefensuche wirds nicht gehen.

mfg
- eth

Dann hast du aber eine schlechte Laufzeit, wenn du jeden möglichen Weg
durchgehst und ihn auf länge kontrollierst.

Es ist vorallem eine interessante Aufgabenstellung, da es in der
Mathematik keine eindeutige Beschreibung für das Finden des schnellsten
Weges in kürzester Zeit gibt.

Breiten und Tiefensuche hätte z.B.: nur eine Laufzeit von O(k^n)
k ... Anzahl der Verzweigungen
n ... Tiefe des Labyrinths

Ein guter Algo schafft es in O(k*log n )
Aber auch nur wenn k << n

ethrandil
2006-09-22, 18:55:46
Gut ich gebe zu, dass ich etwas vorschnell geantwortet habe ;-)

A* ist wohl doch schneller - aber selbst das ist bekannt und eine Heuristik ließe sich wohl auch nicht so schwer finden.

Interessanter fände ich es, die Aufgabe so zu formulieren:
+ Ein Programm mit GUI, das Labyrinthe öffnen, speichern und generieren kann
+ Das den Weg finden und anzeigen kann
+ Das Dateiformat können wir uns hier überlegen und vorgeben

mfg
- eth

gentoo
2006-09-22, 20:08:47
Wir könnten der Aufgabe eine Problemstellung hinzufügen,
indem wir das Labyrinth als gewichteten Graphen formulieren.
D.h.: Jeder Wegpunkt bekommt zusätzlich ein Gewicht (z.B.: zwischen -10 und 10 ). Da die Wegpunkte addiert werden müssen, gewinnt das Prog mit
der niedrigsten Summe für den Weg.

Das hinterhältige an der Aufgabenstellung ist, dass es keine
eindeutige Lösung für das Problem gibt, da ein Algo bei einem Labyrinth
recht gut abschneiden kann und bei einem anderen total versagen kann.:rolleyes:
Daher muss auch jedes Prog mit verschiedenen Labyrinthen getestet werden.


Interessanter fände ich es, die Aufgabe so zu formulieren:
+ Ein Programm mit GUI, das Labyrinthe öffnen, speichern und generieren kann
+ Das den Weg finden und anzeigen kann
+ Das Dateiformat können wir uns hier überlegen und vorgeben

Das würde dann kompliziert zum Testen werden, wenn verschiedene
Programmiersprachen verwendet werden.
Ein Programmierer verwendet für die Gui pygtk ein anderer wxpy oder
fxpy.

Wir sollten festlegen dass keine zusätzlichen Libraries verwendet werden
dürfen außer den default-libraries und daher auf eine Gui verzichten.


mfg
gentoo

ethrandil
2006-09-22, 20:55:41
Wir sollten festlegen dass keine zusätzlichen Libraries verwendet werden dürfen außer den default-libraries und daher auf eine Gui verzichten.
Kommt drauf an ;-)

Da ich dafür plädiere, dass es eine Abstimmung gibt und jeder jedes Programm einmal ausprobiert, bevor er abstimmt, finde ich dass es egal ist, welche Libs benutzt werden.
Man könnte vorschreiben, dass der Algorithmus auf jeden Fall selber implementiert werden muss.

Wieso muss man den Code der GUI 'testen'? Das kann man doch durch Usability-Tests. Und ob der Code schön aussieht, kann man auch sehen ohne die Libs zu kennen.

Ich stelle mir vor, dass zu jedem Programm 2 Screenshots, eine unabhängige Performanceangabe, der Code und ein Binary zur Verfügung gestellt wird und darauf basierend jeder bewerten kann wie er will.
Oder sit die Bewertungsfrage schon entschieden?

mfg
- eth

gentoo
2006-09-22, 21:17:25
Da ich dafür plädiere, dass es eine Abstimmung gibt und jeder jedes Programm einmal ausprobiert, bevor er abstimmt, finde ich dass es egal ist, welche Libs benutzt werden.
Man könnte vorschreiben, dass der Algorithmus auf jeden Fall selber implementiert werden muss.

Ich stelle mir vor, dass zu jedem Programm 2 Screenshots, eine unabhängige Performanceangabe, der Code und ein Binary zur Verfügung gestellt wird und darauf basierend jeder bewerten kann wie er will.


Sprachen wie Perl, Python, Java ... erzeugen kein BinaryOutput.
Wenn jeder seine eigenen Libs verwendet, muss daher jeder der das Prog
testet auch die Libs installieren damit es ausführbar ist ( und es gibt eine Menge Libraries ;) ).


Oder ist die Bewertungsfrage schon entschieden?


Entschieden ist hoffentlich noch nichts - sonst würd ich ja umsonst posten :D