Der FizzBuzz-Test in PowerShell

Vor kurzen bin ich per Zufall auf den FizzBuzz-Test gestoßen, der bei Einstellungstests verwendet wird, um festzustellen, ob ein potentieller Entwickler überhaupt mit der Logik des Programmierens klar kommt:

http://c2.com/cgi/wiki?FizzBuzzTest

Die zu lösende Aufgabe ist im Grunde simpel: Es sollen die Zahlen von 1 bis 100 ausgegeben werden. Ist die Zahl glatt durch 3 teilbar, soll anstelle das Wort „Fizz“, ist die Zahl durch 5 glatt teilbar das Wort „Buzz“ und wenn die Zahl sowohl durch 3 als auch durch 5 (glatt) teilbar ist, das Wort „FizzBuzz“ ausgegeben werden.

Auch wenn Admins keine Programmierer sein müssen, hat es mich gereizt die kleine Aufgabe per PowerShell zu lösen, da dies eine gute Gelegenheit ist, die Flexibilität des switch-Befehls zu veranschaulichen.

Eine Lösung sieht wie folgt aus:

Die folgende Variante piept die Zahlen in einen ScriptBlock:

Da im letzten Beispiel der ScriptBlock per Call-Operator ausgeführt wird, muss der Pipeline-Inhalt über die Variable $Input, die für ein Enumerator-Objekt steht, angesprochen werden (das sind Kleinigkeiten, die ich mir nur schwer behalten kann, aber wozu gibt es das Internet;).

Ein weitere Besonderheit ist mir erst aufgefallen als mir die Ausgabe genauer angesehen hatte. Für Zahlen, die sowohl durch 3 als auch durch 5 teilbar sind, soll nur „FizzBuzz“ und nicht auch „Fizz“ und „Buzz“ ausgegeben werden. Der switch-Zweig muss in diesem Fall die weitere Prüfung abbrechen. Da ein break den Befehl komplett abbrechen würde, muss in beiden Varianten continue verwendet werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

This site uses Akismet to reduce spam. Learn how your comment data is processed.