Wöchentlich stelle ich „meinen“ SE1-Studenten ein paar kleine meist sehr einfache Aufgaben. Letztens hab ich ihnen versprochen, die Aufgabe zu „Java“ wird ein Kinderspiel. Und genau das war sie auch:
Das Spiel geht folgendermaßen: Es geht reihum und dabei muss gezählt werden. Jeder sagt die Zahl, die um eins höher ist, als die vorherige. Es wird bei 1 angefangen und der, der einen Fehler macht, scheidet aus dem Spiel aus. Damit das nicht so einfach ist, werden alle Vielfache von 3 durch „Fizz“ und alle Vielfache von 5 durch „Buzz“ ersetzt. Vielfache von 3 und 5 werden durch „Fizzbuzz“ ersetzt. Damit ergibt sich folgende Folge:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
...Ich hätte jetzt gerne eine Prozedur, die einen int-Parameter entgegen nimmt und das Ganze bis zu dieser Grenze durchexerziert. Also
fizzbuzz(16)
gibt genau die obige Ausgabe auf der Konsole aus.
Die Aufgabe selbst ist nicht weiter spannend, eigentlich sogar ziemlich langweilig. Etwas weniger langweilig ist aber, wo ich die Idee her hab.
Auf die Idee gebracht hat mich ein Blog-Artikel auf codinghorror.com. Dort beklagt sich jemand, dass 199 von 200 Bewerbern auf ne Programmierstelle nicht programmieren können. Und diese Aufgabe soll die Spreu vom Weizen trennen und die 199 heraus filtern. Angeblich gab es sogar Doktoren der Informatik, die mit solchen Aufgaben Probleme hatten. (BTW: Die allermeisten meiner Studenten konnten die Aufgabe mehr oder weniger zufriedenstellend lösen und die haben gerade erst mit Java angefangen.)
Aber es gibt noch viel interessanteres Zeug auf das man stößt, wenn man den Links in obigem Artikel folgt:
- Der ursprüngliche Post ist der hier.
- Noch ein Blog-Post
- In den Kommentaren zu den genannten Blog-Posts gibts Implementierungen in fast jeder erdenklichen Programmiersprache von einfach und gut lesbar bis absichtlich kompliziert. Die Aufgabe scheint etwas an sich zu haben, das danach schreit, implementiert zu werden. Egal wie sinnfrei das Programm auch ist. Da erwacht irgendwie der Spieltrieb in den Programmierern.
- Andere argumentieren, FizzBuzz sei reine Zeitverschwendung, die einen nur davon abhält, etwas Sinnvolles zu tun.
- Außerdem findet man reichlich Diskussionen darüber, ob es nun sinnvoll ist, Bewerbern solche Fragen zu stellen, welche man stattdessen stellen sollte, etc. Aber auch …
- …Tipps für Bewerbungsgespräche…
- … Statistische Betrachtungen darüber, wie die 199 zustande kommen…
- … ja sogar wissenschaftliche Paper über solche Trivialaufgaben.
Das, was ich hier schreibe ist inoffizielles Zusatzmaterial. Es kann euch vielleicht für die Klausur (und/oder darüber hinaus) helfen, aber ihr werdet euch vermutlich nicht darauf berufen können. Im Zweifel gilt nicht das, was hier steht, sondern das Skript bzw. die Vorlesung.
Anmerkungen jeglicher Art sind gerne gesehen. Persönlich, per Mail oder auch als Blog-Kommentar. Wie immer gilt: Bei Fragen: fragen.