PixelCompetition
PixelCompetition ist ein interaktiver Programmierwettbewerb. In Anlehnung an die legendäre PixelFlut (https://cccgoe.de/wiki/Pixelflut) geht es darum, auf einem gemeinsamen Canvas Bilder zu malen. Dabei gibt es verschiedene Protokolle, über die ein Pixel gezeichnet werden kann. Zu vorgegebenen Zeitpunkten (s. Fahrplan) wird jeweils ein neues Protokoll freigegeben, so dass die Teilnehmer dann um die Wette eigene Clients erstellen können.
Während der RC3 bieten wir Einsteigerworkshops zum Schreiben von PixelCompetition-Clients in verschiedenen Programmiersprachen in unserem Jitsi an: (https://meet.maglab.space/PixelCompetition-RC3)
Inhaltsverzeichnis
TL;DR
- TCPSocket auf box.pixel-competition.de, Port 2342
- Server meldet gültige Textbefehle.
- Befehle in UTF-8 codiert an Server schicken.
- Ergebnisstream unter: https://www.youtube.com/user/jschlingensiepen/live
Workshops
Jeder Workshop beginnt 'from the scratch' mit dem Herunterladen, Auspacken und Einrichten der Tools. Wir installieren immer eine Programmierumgebung für Windows und Linux (Debian/Ubuntu) und implementieren gemeinsam einen Client für das PixelFlut-Protokoll.
Während der Workshops wird die B001 laufen, also das simple PixelFlut-Protokoll, so dass wir gleich ausprobieren können.
Sprache | Tools | Inhalt |
---|---|---|
Python | Thonny |
Wir implementieren einen einfachen Client, der ein Bild einliest und als PixelFlut-Befehlssequenz an einen Server sendet. Zielsetzung: Grundsätzliches Verstehen des Aufbaus eines sehr einfachen Clients in Python als Grundlage zur Implementierung von anspruchsvolleren Client. |
C# | dotNET core Visual Studio Code |
Wir implementieren einen einfachen Client, der ein Bild einliest und als PixelFlut-Befehlssequenz an einen Server sendet. Zielsetzung: Grundsätzliches Verstehen des Aufbaus eines sehr einfachen Clients in C# als Grundlage zur Implementierung von anspruchsvolleren Client. |
JavaScript | nodeJS Visual Studio Code |
Wir implementieren einen einfachen Client, der ein Bild einliest und als PixelFlut-Befehlssequenz an einen Server sendet. Da in NodeJS die Nebenläufigkeit sehr gut unterstütz wird, zeigt dieser Client auch die Rückmeldungen des Servers an. Zielsetzung: Grundsätzliches Verstehen des Aufbaus eines sehr einfachen Clients in JavaScript als Grundlage zur Implementierung von anspruchsvolleren Client. |
Java | BlueJ |
Wir implementieren einen einfachen Client, der ein Bild einliest und als PixelFlut-Befehlssequenz an einen Server sendet. Zielsetzung: Jeder Teilnehmer soll am Ende einen Client haben, auf dessen Basis Lösungen für die Competitions implementiert werden können. |
Competitions
Im Laufe der Zeit gibt es verschiedene Competitions, d.h. der Server akzeptiert verschiedene Prokotolle, diese sind unterschiedlich schwierig, einen groben Anhaltspunkt für den Schwierigkeitsgrad kann man an der Höhe der Zahl in der Bezeichnung ablesen.
Kategorie | RC3 | Was ist das? |
---|---|---|
simple | B001, B003 | Hier erwarten Euch recht einfache Protokolle, wie z.B. das PixelFlut-Protokoll, bei dem jeder einfach Pixel malen darf oder ein Turtle-Protokoll, bei dem jede TCP-Session zum Steuern einer malenden Schildkröte verwendet wird.
Zielsetzung: Grundsätzliches Verstehen des Aufbaus eines Clients. |
medium | C050, C100, C150, C180, C200, C210 | Hier erwarten Euch Protokolle, bei denen Ihr etwas über die Implementierung des Clients nachdenken müsst, weil z.B. zwei aufeinanderfolgende Pixel so gesetzt werden müssen, dass ein Springer (Schach) von einem zum anderen hätte springen können.
Zielsetzung: Grundsätzliches Verstehen des Aufbaus eines Clients und des Implementierens vorgegebener Protokolle. |
hard | C500, C510, C600, C630, C710 | Hier erwarten Euch härtere Competitions, bei denen der Client zum Setzen eines Pixels wirklich etwas leisten muss, Stichworte: Faktorierung großer Zahlen, OCR, Captchas, ...
Zielsetzung: Wer implementiert den schnellsten Client für die Lösung eines vorgegebenen Problems. |
ws | Workshop | Während der Workshops wird die B001 laufen, also das simple PixelFlut-Protokoll.
In den Workshops installieren wir immer eine Programmierumgebung auf Windows und Linux (Debian/Ubuntu) und implementieren gemeinsam einen Client für das PixelFlut-Protokoll. Zielsetzung: Jeder Teilnehmer soll am Ende einen Client haben, auf dessen Basis Lösungen für die Competitions implementiert werden können. |
Fahrplan zur chaosflux
Beginn | 2021-02-26 | 2021-02-27 | 2021-02-28 |
---|---|---|---|
00:00 | B001 | C180 | C100 |
01:00 | B001 | C500 | C180 |
02:00 | B001 | C500 | C500 |
03:00 | B001 | C600 | C500 |
04:00 | B001 | C600 | C600 |
05:00 | B001 | B001 | C600 |
06:00 | B001 | B001 | B001 |
07:00 | B001 | B001 | B001 |
08:00 | B001 | B001 | B001 |
09:00 | B001 | B001 | B001 |
10:00 | B001 | B001 | B001 |
11:00 | B001 | B001 | B001 |
12:00 | B001 | B001 | B001 |
13:00 | B001 | Support | B001 |
14:00 | B001 | B001 | Support |
15:00 | B001 | B003 | B001 |
16:00 | B001 | C050 | B003 |
17:00 | B001 | C180 | C100 |
18:00 | B001 | C180 | C100 |
19:00 | B001 | C500 | C180 |
20:00 | Python | C500 | C180 |
21:00 | B001 | C600 | C500 |
22:00 | B003 | C600 | C500 |
23:00 | C050 | C100 | C600 |
Disclaimer und Regeln
Für die PixelCompetition gelten die üblichen Regeln des zivilisierten Umgangs miteinander. Für alle, die nicht so genau wissen, was damit gemeint sein könnte, hier eine kurze Aufzählung wichtiger Punkte:
- Der Wettbewerb findet ausschließlich auf dem Spielfeld statt. Es gibt keine Hacks, DOS, DDOS oder sonstige Angriffe auf die Gegner, die Competition ist nur hier. (vulgo: es gilt – wie überall – die Hackerethik: CCC|Hackerethik)
- Das Einspeisen von Bildern, Texten oder Symbolen, die Gewalt verherrlichen oder zur Ausgrenzung von Menschen aufrufen, sind verboten; vgl. https://www.ccc.de/de/updates/2005/unvereinbarkeitserklaerung.
- Da sich die Competition auch an Jung-Haecksen und Jung-Hacker richtet, ist das Einspeisen von pornographischen Bildern verboten.
- Wir stellen die Competition als lustigen Zeitvertreib zur Verfügung und freuen uns über Anregungen für die Zukunft. Bloßes Rummoppern ist allerdings nicht erwünscht.