Der Wettbewerb wurde neu aufgelegt: Neuer µitLight!
Thema: Schach-Engine
Diesmal wird es wieder recht komplex. Es geht darum, eine Schach-Engine zu prorgrammieren. Das ist recht kompliziert, deshalb werden die Weihnachtsferien mit einbezogen, und das Ganze endet am Ende vom Dezember.
Um die Übersicht zu wahren, verteile ich die einzelnen Dinge mal auf Spoiler!
Mindestanforderungen
Das ganze Programm soll innerhalb einer Konsole funktionieren. Heißt, dass sich beim Start - ohne zusätzliche UDF - eine Kommandozeile öffnet. Diese darf auch aus einem Edit-Control bestehen, soll aber keine Zusatzfunktionen bieten! Auf optischen Schnickschnack bitte verzichten. In diese Konsole sollen Befehle eingebbar sein. Mindestens folgende müssen vorhanden sein:
- list - zum Auflisten der aktuellen Positionen aller Funktionen
- set - gefolgt von zwei parametern zum setzen der figuren (also z.B. "set a2 a4")
- Rochaden werden als set 0 0 für die kurze oder set 0 0 0 für die lange angegeben - denkt an die Voraussetzungen für die Rochade!
- aufgabe - Zum Aufgeben
- für eine Umwandlung muss automatisch gefragt werden
- en passant wird mit (z.B.) "set a4 b3 ep" angegeben
Eine Uhr soll nicht implementiert werden!
Der erste Schritt wäre also die Programmierung eines Schachspieles, der zweite die KI.
KI
Die KI soll alle oben genannten Befehle möglichst unterstützen (Sonderzüge Rochade und ep bringen Sonderpunkte, sind aber keine Pflicht). Wichtig ist, dass die KI nach 20 Sekunden den Zug automatisch abbricht und irgend einen Zug vollführt. Die KI muss nicht unbedingt durch den Anwender abbrechbar sein, sich selbst aber unterbrechen!
Bewertung
Bewertet werden u.a. folgende Kriterien:
- Die Geschwindigkeit des Algorithmus
- Die "Intelligenz" der getätigten Züge
- Die Kompaktheit des Codes (nein, eine Zeile, die nichts tut, gewinnt nicht )
- Die Effizienz (Ressourcenverbrauch)
- Idee für die Engine
- ...
Kommentar zur Kompaktheit: Darunter zählt nicht, alles in möglichst wenige Zeilen zu quetschen und auf Kommentare zu verzichten. Es geht mehr darum, wie einfach der Code geschrieben wurde.
Sollte es Nachfragen oder Unklarheiten zu den Regeln geben, dann bitte ich um einen Post, den wir hier bearbeiten.
Kommentare zur Dokumentation sind verpflichtend! Diese müssen nicht jede Zeile kommentieren, aber wichtige Stellen beschreiben bzw. den Algorithmus und die Idee, die dahinter steckt, beschreiben.
Der Abgabetermin ist der 31.12.2010. Sollten wir innerhalb der letzten beiden Wochen bemerken, das aufgrund der Komplexität kein Ergebnis zu Stande kommen sollte, lässt sich dieses Abgabedatum erweitern, sodass die ganzen Winderferien genutzt werden können - dies geschieht aber nur, falls eine Mehrheit nicht fertig werden sollte.
Sendet Einsendungen bitte an uitlight@l3viathan.de.
Wir hoffen auf viele Einsendungen zu diesem doch sehr spannenden Projekt!
Viel Erfolg allerseits!
Schnitzel, L3viathan und Matthias