## What is the “FizzBuzz” interview question?

The “FizzBuzz” challenge is a typical interview question designed to help determine job candidates solving skills to filter out job candidates.

The challenge is to write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”, and the answer should be the following:

`1, 2, Fizz, 4. Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz`

### First approach

The first way, I created a variable containing the range from 1 to 100 by using the range operator `1..100`

that easily generates the numbers from 1 to 100. Then used the

cmdlet to loop through each number in the variable. When using the `Foreach-Object`

the variable `Foreach-Object`

store the current value of each iteration, then checked to see if the number is multipliable of both three and five then output to the console “FizzBuzz”. Furthermore, checked to see if number was multipliable with 3 and then output “Fizz”, and outputting “Buzz” when multipliable by 5. If no of the conditions are met it prints the numbers to the console.`$_`

$Number = 1..100 $Number | ForEach-Object { if ($_ % 5 -eq 0 -and $_ % 3 -eq 0) { Write-Host "FizzBuzz" } elseif ($_ % 3 -eq 0) { Write-Host "Fizz" } elseif ($_ % 5 -eq 0) { Write-Host "Buzz" } else { $_ } }

### Second approach

This approach is similar to the above, except a different way to l loop through the numbers of from 1 to 100, by starting with creating variable containing the value of `$i=1`

and loops through until the variable `i`

is less than or equal to `100`

, then for each round it goes through the same `if`

statements as above.

for ($i = 1; $i -le 100; $i++) { if ($i % 5 -eq 0 -and $i % 3 -eq 0) { Write-Host "FizzBuzz" } elseif ($i % 3 -eq 0) { Write-Host "Fizz" } elseif ($i % 5 -eq 0) { Write-Host "Buzz" } else { Write-Host $i } }

### Third approach

The third approach is also similar with the above, only different is that I created a variable `$Numbers = 1..100`

that contains the range, same as the first one, in stead using `foreach`

to loop through each `$Number`

in the number range in the variable `$Numbers`

, then using the same `if`

statements as above.

$Numbers = 1..100 foreach ($Number in $Numbers) { if ($Number % 5 -eq 0 -and $Number % 3 -eq 0) { Write-Host "FizzBuzz" } elseif ($Number % 3 -eq 0) { Write-Host "Fizz" } elseif ($Number % 5 -eq 0) { Write-Host "Buzz" } else { Write-Host $Number } }

### Fourth approach

In the last one, I used a little different approach. To start with I used same approach as in the first example, but instead of using `if`

statements, I used `switch`

. This is equivalent to a series of `if`

statements, but it is simpler when checking many types of conditions. The switch condition lists each condition and an optional state, if the condition is met an action is performed. It’s a great way for adding more conditions to a script or function. Lets say you want to add two more conditions “when multipliable by 7 output Foo and when multipliable by 9 output Bar”, as can be seen in the “Extended version”.

# First version $Number = 1..100 $Number | Foreach-Object { switch ($_) { { $_ % 5 -eq 0 -and ($_ % 3 -eq 0) } { "FizzBuzz" } { $_ % 3 -eq 0} { "Fizz" } { $_ % 5 -eq 0} { "Buzz" } Default { $_ } } } # Extended version $Number = 1..100 $Number | Foreach-Object { switch ($_) { { $_ % 5 -eq 0 -and ($_ % 3 -eq 0) } { "FizzBuzz" } { $_ % 3 -eq 0} { "Fizz" } { $_ % 5 -eq 0} { "Buzz" } { $_ % 7 -eq 0} { "Foo" } { $_ % 9 -eq 0} { "Bar" } Default { $_ } } }

That’s for it to night, have a great one!