Welche Fragen sollten bei einem Einstellungstest für Programmieranfänger gestellt werden?
Diese Frage wurde in abgewandelter Form vor einiger Zeit von Jeff Atwood gestellt.
Er vertritt die Meinung, dass Anfänger in der Lage sein sollten, einfache Probleme zu lösen.
Der FizzBuzz-Test ist so ein einfaches Problem, dass in ungefähr zehn bis fünfzehn Minuten lösbar sein sollte.
Die Aufgabe lautet folgendermaßen:
Schreibe ein Programm, dass die Zahlen von eins bis einhundert ausgibt.
Dabei sind drei Dinge zu beachten:
a) Wenn eine Zahl ein Vielfaches von Drei ist, soll “Fizz” ausgegeben werden.
b) Wenn eine Zahl ein Vielfaches von Fünf ist, soll “Buzz” ausgegeben werden.
c) Ist die Zahl sowohl ein Vielfaches von Drei als auch Fünf, soll die Ausgabe “FizzBuzz” lauten.
Es gibt unterschiedlichste Möglichkeiten, diese Aufgabe zu lösen. Anbei einige Beispiele in Java, PHP und Ruby:
Java:
package fizzbuzz;
public class Main {
public static void main(String[] args) {
fizzBuzzStart();
}
public static void fizzBuzzStart(){
for(int i = 1; i <101; i++ ){
if( (i%5 == 0) &amp;amp;&amp;amp; (i%3 == 0) ){
printFizzBuzz();
continue;
}
if(i%3 == 0){
printFizz();
continue;
}
if(i%5 == 0){
printBuzz();
continue;
}
System.out.println("Number:" + i);
}
}
public static void printFizz(){
System.out.println("Fizz");
}
public static void printBuzz(){
System.out.println("Buzz");
}
public static void printFizzBuzz(){
System.out.println("FizzBuzz");
}
}
}
PHP: Nachfolgend eine möglich Lösung in PHP:
<?php
class FizzBuzz{
private static $i = 1;
public static function start($startvariable){
self::$i = $startvariable;
$flag_fizz_buzzed = true;
while(self::$i < 101){
if( ((self::$i % 5) == 0) and ((self::$i %3) == 0)){
self::printFizzBuzz();
$flag_fizz_buzzed = false;
}
if( ((self::$i % 3) == 0) and $flag_fizz_buzzed){
self::printFizz();
$flag_fizz_buzzed = false;
}
if( ((self::$i % 5) == 0) and $flag_fizz_buzzed){
self::printBuzz();
$flag_fizz_buzzed = false;
}
if($flag_fizz_buzzed){
echo "Number: " . self::$i ."\n";
}
self::$i++;
$flag_fizz_buzzed = true;
}
}
public static function printFizz(){
echo "Fizz\n";
}
public static function printBuzz(){
echo "Buzz\n";
}
public static function printFizzBuzz(){
echo "FizzBuzz\n";
}
}
echo "***run 1 starting***\n";
fizzBuzz::start(1);
echo "***run 1 finished***\n";
echo "***run 2 starting***\n";
fizzBuzz::start(1);
echo "***run 2 finished***\n";
?>
Ruby: In Ruby existiert ein gem, welches verschiedene Lösungen enthält:
Dieses sollte zuerst installiert werden: sudo gem install fizzbuzz
require 'rubygems' require 'fizzbuzz' puts fizzbuzz
Quellen:
- Bizz buzz – ein ähnliches Spiel
- Bei stackoverflow gibt es sehr kreative Lösungen. Unter anderem
Enterprise-Fizz-Buzz oder ein Programm, dass einfach alle richtigen Lösungen enthält und lediglich am Bildschirm darstellt.
und in Python schauts noch einfacher aus:
for x in range(100):
if x%5 == 0 and x%3==0:
print “FizzBuzz”
elif x%5 == 0:
print “Buzz”
elif x%3 == 0:
print “Fizz”
else:
print x