Programmier contest

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von cpu_johnny.

    Programmier contest

    Hey Marcus,


    was hälst du von der Idee eines Programmier contests.

    Aufgaben wie "Kürzester Quellcode" oder "Geschwindkeit" könnte ich mir sehr interissant vorstellen ?

    Was halten die anderen davon ?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „bsHobbit“ ()

    Das Thema wurde glaube ich schon zwei Mal angesprochen, einmal hier: Vorschlag: Aufgaben für andere erstellen

    Und dann noch irgendwo, wo dann auch auf den Thread hingewiesen wurde. ;)

    Die Frage ist nach wie vor, wer sich die Mühe machen will, das Ganze zu organisieren, usw. Es muss ja auch eine Jury geben. Ich habe dafür, zumindest bis Juli, keine Zeit. Evtl. kann man Sponsoren für Preise finden, z.B. Microsoft für Bücher.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Sorry, diesen Thread hatte ich übersehen.

    Aber vllt. finden sich hier 1-2 Leute, die sich die Mühe machen, Aufgaben samt Regelwerk (z.b. Kein * und / operanden verwenden) erstellen.

    Und wegen der Jury, es wird einfach eine Test Application geben (also alles Console Application) die alles auf richtigkeit testet, wenn der Test bestanden ist, gilt die Aufgabe als erfolgreich abgegeben.

    Und der tester stellt einfach das testresultat online.

    klingt einfach, jetzt muss sich nur noch diese Person finden.
    Ich kenn das aus anderen Foren so das dort die Artikel (oder was auch immer) per PN gesendet werden an den Verwalter.
    Nach ablauf der Frist werden diese dann zur Bewertung ausgestellt.

    Die Frage ist ja in welche Richtung wir wollen :)
    Schneller Code oder der kürzeste Code oder was auch immer.

    Und dann ist noch die Frage ob wir nur VB(.NET) zulassen oder auch andere Sprachen.
    Als Verwalter wäre eventuell ein Mod geeignet.
    Wenn es denn einer von denen möchte :)
    Das ganze müsste man nicht nur mit einem, sondern mit mehreren Mods machen, um einfach eine größere und strengere Jury zu erhalten. Zudem würde ich sagen, dass man die Kontests am Montag startet, am Freitag abgibt, am Samstag auswertet und am Sontag kürt. Nach der Auszeichnung wird der neue Kontest bekanntgegeben. Zudem sollte das ganze Open Source sein und danach ins Forum Tipp & Tricks und Tutorials, damit Anfänger auch was davon haben. Zudem sollten die Quellcodes komplett auskommentiert werden, was die Punktevergabe deutlich beeinflussen sollte.

    EDIT: Ooh mein Gott, ich stell schon wieder ein Regelwerk auf....
    Natürlich darf dann die Länge der Kommentare nicht zur Länge des Quelltextes hinzugezählt werden, sondern sollte ein komplett eigenständiger Bewertungspunkt geben.

    EDIT: Man könnte ja mal ein paar Testkontests machen. Dzu einfach eine neue Forenkategorie eröffnen und paar Leute zu Mods verdonnern und los gehts
    Ich denke mir eine Aufgabe ungefähr so:


    Die Leute bekommen ein fertig kompilierbares projekt.

    Jetzt nehmen wir die aufgabe: Einen einfachen Rechner zu programmieren (ADD, SUB, MUL, DIV). Folgende Regeln sind zu beachten:

    - Kein * und kein / Operanden verwenden
    - Keine delegates verwenden
    -... usw.

    In diesem Projekt gibt es dann eine Methode

    Quellcode

    1. calc (int v2, int v2, Operand operand)
    2. {
    3. }


    diese muss von dem nuter gefüllt werden.

    wenn die aufgabe kürzester code ist, werden alle tokens innerhalb dieser Methode gezählt.

    danach durchläuft das ganze ein paar tests

    0/0

    -32565 / -32565 (oder was die grenze auch immer ist)

    1/1000
    3/ 8000

    usw...

    wenn alle tests bestanden wurden, dann gilt die aufgabe als erfolgreich abgegeben.
    naja gut das stimmt auch wieder....



    EDIT: Man könnte ja auch noch Zusätzlich dem Programmordner ein Struktogramm anheften....

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „powerprogger“ ()

    Wenn man einen Kontest für den kürzesten Code macht fällt kommentieren wohl gänzlich weg (man könnte lediglich 2 Versionen machen, eine die bewertet wird, die andere, die kommentiert ist dann für die Veröffentlichung oder so in der Art.
    Man kann ja auch beides einfließen lassen, Stil und Codelänge (so 50 - 50).
    Ich stelle mir das so vor, dass die Jury pro Aufgabe einen ausführlichen Bewertungsbogen erstellt den alle einsehen können um sich so an die Vorgaben zu halten (so kann man z.B. wie bsHobbit schon gesagt hat bei einigen Aufgaben einige Funktionen / Operanten verbieten).
    Wenn wir das ganze wirklich realisieren, bin ich dafür, nur .NET Sprachen zu erlauben, da man den Code sonst kaum mit anderen Sprachen vergleichen kann (in Python kann man z.B. wesentlich kürzeren Code verfassen als in .NET). Ebenfalls sollte es so laufen, dass die Boardbenutzer alle Codes zur Verfügung haben sowie die fertig kompilierten Anwendungen um sich eine Meinung zu bilden. Ein Screenshot sollte ebenfalls Pflicht sein. Alle Benutzer sollten Voten dürfen, das Ergebnis fließt dann mit in die Bewertung der Jury ein (z.B. 20% der Bewertung der Jury entsteht durch die Votes). Natürlich sollten alle Jury-Mitglieder nicht mitarbeiten dürfen, Teammitglieder, die die Aufgaben mit ausarbeiten, weiß ich nicht (eventuell könnten diese ja vorher schon die Aufgabe lösen, was aber im Endeffekt ziemlich egal ist, da keine der Aufgaben mehr als 1-2 Tage Arbeit in Anspruch nehmen wird). Man könnte noch eine Art Konzept anfordern, d.H. jeder Teilnehmer sollte eine Art Konzept / Struktur beilegen die ein kleines bisschen in die Bewertung eingeht. So kann man sich gut auf das 'echte' Leben vorbereiten (finde ich ;)).

    Für die Jury stelle ich mich hiermit auch bereit und kann auch gerne die Einsendungen verwalten, die Aufgaben ausführlich erklären & posten (aber nicht alleine ausdenken, dazu könnte man vielleicht ein kleines Team bilden). Damit sowas ordentlich bewerkstelligt werden kann, ist ein neues Forum unbedingt von Nöten:
    • Kontestforum
      • Intern: Jury-Forum
      • Intern: Team-Forum (zum ausarbeiten der Aufgaben)
      • Aufgabenforum (hier kann nur der Moderator Aufgaben posten, antworten kann jeder um eventuelle Fragen zu stellen)
      • Voteforum (hier kann jeder registrierte Boardbenutzer am Ende einer Woche (Samstag oder so) seine Stimme abgeben)


    ~ Chris
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    Chrisber,

    in welcher wunderwelt lebst du eig. ? Kein mensch hat lust bei jeder kleinen kontest aufgabe so ein tralala zu veranstalten.

    Was bitte für screenshots ? Die ausgabe ist durch die aufgabenstellung vorgegeben ! BASTA!

    Und kommentare weglassen ? Warum das denn ? Einfach einen Tokencounter benutzen und fertig ist die sache. Stil sollte man außen vor lassen, da dieser bei kurzen codes oft flöten geht.

    Wenn eine aufgabe kürzester code lautet kann man nicht auch noch einen schönen programmierstil erwarten Oo


    Ihr macht daraus einfach eine zu große nummer.

    und wenn dann nur VB .net ! Weil ich bin der meinung mit c# bekommst du immer kürzeren code ;)

    Ich habe hier mal eine kleine Beispielaufgabe gepostet und diese nun in vb .net umgewandelt. so könnte das dann zum besipiel aussehen:

    VB.NET-Quellcode

    1. Module Module1
    2. 'vorgabe:
    3. Private Enum _Operand
    4. _ADD
    5. _SUB
    6. _MUL
    7. _DIV
    8. End Enum
    9. 'Regeln:
    10. 'Die Operanden * und / sind verboten
    11. 'for-schleife verboten
    12. 'rekursiver aufruf verboten
    13. 'delegates verboten
    14. 'usw..
    15. 'Viel erfolg
    16. 'Zu implementierende Methode:
    17. Private Function calc(ByVal v1 As Integer, ByVal v2 As Integer, ByVal operand As _Operand) As Integer
    18. 'Hier jetzt mal eine Idee, wie man sowas lösen könnte
    19. 'Was man natürlich noch beachten muss sind diverse Fehlerfälle...
    20. Dim result As Integer = 0
    21. If (operand = _Operand._ADD) Then result = v1 + v2
    22. If (operand = _Operand._SUB) Then result = v1 - v2
    23. If (operand = _Operand._MUL) Then
    24. While v2 <> 0
    25. result += IIf((v2 And 1) <> 0, v1, 0)
    26. v1 <<= 1
    27. v2 >>= 1
    28. End While
    29. End If
    30. 'Wie macht man wohl eine division ?
    31. Return result
    32. End Function
    33. Sub Main()
    34. ' Hier mittels skript ein paar ergebnisse auswerten
    35. Console.WriteLine(calc(5, 5, _Operand._ADD))
    36. Console.WriteLine(calc(5, 5, _Operand._SUB))
    37. Console.WriteLine(calc(5, 5, _Operand._MUL))
    38. Console.ReadKey()
    39. End Sub
    40. End Module
    Hi.
    Ich habe nur Vorschläge gepostet, nichts weiter. Kein Grund gleich angreifend zu werden ;)
    Zu dem Teil dass man mit C# immer kürzeren Code hinbekommt: Stimmt gar nicht. Man braucht meist sogar noch mehr, da in C# Typenkonvertierung Pflicht ist und so weiter :P

    EDIT: Und wieso so ein Tralala? Wenn jemand Lust dazu hat, etwas mal genauer zu beschreiben und posten (ich z.B.) - warum nicht?

    ~ Chris
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.