PixelCompetition

Aus Magrathea Laboratories e.V.
Zur Navigation springen Zur Suche springen

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)

TL;DR

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

https://chaosflux.de/

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:

  1. 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)
  2. 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.
  3. Da sich die Competition auch an Jung-Haecksen und Jung-Hacker richtet, ist das Einspeisen von pornographischen Bildern verboten.
  4. 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.