Verbesserungsvorschlag für den Coding Contest

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verbesserungsvorschlag für den Coding Contest

    Ich habe mich ein wenig im Internet umgeschaut und erkundigt, wie so ein Coding Contest am besten ablaufen würde, und habe ein paar interessante Infos gefunden. Ich hoffe doch das Voltium ( der Leiter des Contest ) sich dies netterweiße durchlesen würde.

    Das habe ich von der Seite Conding-Contest:

    Und worum ging es eigentlich beim vierten Coding Contest? Alle Teilnehmer haben innerhalb einer Woche eine anspruchsvolle Programmieraufgabe gelöst. Dabei konnte wieder zwischen mehreren Kategorien gewählt werden, wobei es in den Bereichen unterschiedliche Aufgaben gab

    -------

    Schon allein aus diesen 2 Sätzen kann man Kapital schlagen.
    Um einen effektive Coding Contest zu gestalten, bei denen auch wirklich mehrer User teilnehmen können sollte man verschiedene Kategorien zur Auswahl haben.

    -PHP
    [SPOILER2]
    Aufgabe der Kategorie PHP (powered by Netresearch)

    Ausgangslage

    Pong, das Urspiel der Videospiele, wurde vor 40 Jahren veröffentlicht und ist das erste weltweit populäre Videospiel. Das simple Spielprinzip erinnert an Tischtennis: Auf dem Bildschirm bewegt sich ein Punkt hin und her, zwei Spieler steuern jeweils einen senkrechten Strich, der nach oben und unten verschoben werden kann. Trifft der Punkt nicht den senkrechten Strich, erhält der Gegner einen Punkt.

    Aufgabe

    Implementiere entweder den Server (der die Kontrolle über das Spielfeld und die Bewegung des Balles hat) oder aber einen Client (die KI, die selbstständig entscheidet, wohin das Paddel bewegt werden soll).


    Anforderungen

    Es gibt folgende Abfragen:

    • GET /game/:key/status <- Liefert den kompletten Status des Spielfeldes aus, also Ballposition, Ballbewegung und Spielstand.
    • GET /game/:key/config <- Grundkonfiguration des Spiels (Größe des Spielfelds, des Balls, der Paddel).
    • POST /game/:key/start <- Liefert ok zurück, wenn das Spiel gestartet wurde. Dies wird automatisch passieren, sobald sich zwei Spieler angemeldet haben.
    • PUT /game/:key/player/:playername/ <- Meldet einen Spieler am Spiel an. Gibt eine geheime Zeichenkette zurück, die bei jeder Bewegung des Paddels von den Clients mitzuliefern ist.
    • POST /game/:key/player/:playername/:secret/up/ <- Bewegt das eigene Paddel eine Einheit nach oben, das geht nur 10x pro Sekunde
    • POST /game/:key/player/:playername/:secret/down/ <- Bewegt das eigene Paddel eine Einheit nach unten, das geht nur 10x pro Sekunde

    Was muss der Server können?
    Der Server kennt jeweils die aktuelle und die letzte Position von Ball und Paddeln. Daraus muss er die nächste Ballposition berechnen - dazu müssen die Kollisionen mit Spielfeldwand und Paddel - und damit die neue Richtung und Geschwindigkeit des Balls - ermittelt werden. Per REST-API wird der Server von den Clients über Bewegungen der Paddel informiert und liefert den Clients Informationen über Ball- und Paddelpositionen sowie den Spielstand.

    Was müssen Clients können?
    Der Client muss Positionen und Geschwindigkeiten von Ball und Paddeln vom Server abfragen und ausgehend davon entscheiden, in welche Richtung das Paddel mit welcher Geschwindigkeit zu bewegen ist.

    Die Kommunikation zwischen Server und Clients soll ausschließlich über REST erfolgen.

    Es gewinnt derjenige Teilnehmer, dessen Entwicklung mit den meisten Konkurrenten kompatibel (und erfolgreich) ist.

    [/SPOILER2]

    - Java
    [SPOILER2]
    Aufgabe der Kategorie Java I (powered by BI Business Intelligence GmbH)

    Ausgangslage

    Häufig werden Daten für Geschäftsanwendungen nicht per Hand eingegeben, sondern aus anderen Systemen importiert. Ein einfaches und übliches Format für solche Daten ist csv (character separated values).

    Aufgabe

    Um eine hohe Datenqualität im Zielsystem zu gewährleisten, soll der Inhalt der zu importierenden Daten auf Gültigkeit geprüft werden.

    Klingt einfach? Ist es auch! Und gibt es da nicht was von Ratio...? Aber was macht ein "gutes" Validierungsframework aus?

    Bewertungskriterien nach Anwendergruppen:


    • Softwareentwickler, die das Framework verwenden wollen: Mächtigkeit/Flexibilität und Erweiterbarkeit der Validierungsregeln, gute API, freundliche Lizenz
    • geschulte Fachanwender, die die Validierungsregeln erstellen und verwalten: Verständliche und wartbare Konfiguration (nicht komplexer als Excel-Formeln)
    • ungeschulte Datenlieferanten: sehr gut verständliche Ergebnisdarstellung. Hat alles geklappt? Welche Daten waren ungültig, was muss geändert werden? Möglichst in der Sprache des Lieferanten (Englisch, Deutsch)

    Finde daher ein aus Java ansprechbares Validierungsframework, das den in deinen Augen besten Kompromiss bietet. Verbessere es an den Stellen, die dir noch nicht gefallen. Kombiniere bestehende Technologien zu etwas Neuem und Besseren. Oder erstelle gleich dein eigenes Framework.

    Es gewinnt das beste Gesamtwerk. Berücksichtige alle drei Kriterien gleichermaßen!

    Anforderungen

    Abgegeben wird:


    • eine in der JVM lauffähige Software mit kurzer Hilfe zur Verwendung
    • ein paar aussagekräftige Beispiele, an denen man die oben genannten Kriterien gut bewerten kann

    Hinweise

    Vorschläge für Validierungsregeln:


    • Anzahl von Feldern, Datensätzen, z.B.:

    * Es müssen mindesten 10, höchstens 20 Datensätze in der Datei enthalten sein
    *Jeder Datensatz muss 5 Felder haben

    • Prüfung eines einzelnen Feldes, z.B.:Reguläre Ausdrücke, Zahllformate, Datumsformate, größer/kleiner
    • Prüfung über mehrere Felder eines Datensatzes (Zeile), z.B.:

    * Wenn im Feld "Stadt" der Wert "Leipzig" steht, muss im Feld PLZ der Wert "04*" stehen
    * Die Summe von Feld x,y und z darf nicht größer sein als 10

    • Prüfung mehrere Datensätze, z.B.: die Summer vom Feld "Bestellsumme" aller Datensätze mit "Kundennummer"=="123" darf nicht größer sein als 1000€
    • Prüfung von bereits im System vorhandenen Daten, z.B.:

    * Wenn ein Datensatz mit "ID"=="5" importiert werden soll, so muss dieser Datensatz bereits im System vorhanden sein
    * Wenn im System dieser Datensatz ein "Alter" hat, so darf der neu zu importierende Wert aus der csv-Datei nicht kleiner sein.

    Je Prüfung kann eine Wichtigkeit angegeben werden:


    • Fatal: die komplette Datei wird nicht importiert
    • Error: die betroffenen Datensätze werden nicht importiert, alle anderen Datensätze in der csv-Datei aber wie geplant verarbeitet.
    • Warning: auch die betroffenen Datensätze werden bearbeitet, aber eine Warnung ausgegeben.
    • Valid: Die Datensätze sind gültig und werden verarbeitet.

    [/SPOILER2]

    usw. Mann sollte den Teilnehmer verschiedene Kategorien vorlegen können, und die Jury dan dementpsrechend anpassen! Mann sollte eine genaue Vorgabe haben, was programmiert werden sollte etc.
    Das verstehe ich unter genauer Planung eines Contest.

    Ich hoffe doch das dies helfen könnte den Contes von M-Core etwas aktrativer zu gestalten, um eventuell auch mehr User die sich dafür interessieren anlocken.
  • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )