Tag Archives: Programming

The FizzBuzz Question?

To be honest, this is new to me and stumbled across FizzBuzz being an interview question for Software Engineering positions on a medium post by Valeri Alexiev entitled “A Software Engineering survival guide”. Thought I would attempt to tackle it personally, seeing as I’m currently learning Python.

What is FizzBuzz?

Put simply, a kids game. Imran Ghory came up with a class of developer interview questions based on FizzBuzz, a kids game, where you count from 1-100, however on the multiples of three you call out ‘Fizz’, and on the multiples of five you call out ‘Buzz’ and on a number where its a multiple of both three and five you holla ‘FizzBuzz’.

An example of one of the FizzBuzz questions:

Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”. – Imran Ghory

Overthinking

My attempt at answering the FizzBuzz question above, I thought it best to store it in a list but, in reality, I was over thinking it. In my solution, there is way more I need to explain, can be a little confusing with how I chose to reference the index of the list. My attempt is an example of brute forcing some code to get the job done but doesn’t help moving forwards.

output = list(range(1,101))		# This list will be updated and the output at the end

ref = list(range(0,100))			# Used as a reference for the index

for num in ref[2::3]:				# Start after index 2 and count up in 3s
    output[num] = ["Fizz"]

for num in ref[4::5]:				# Start after index 4 and count up in 5s
    if output[num] == ["Fizz"]:
        output[num] = ["FizzBuzz"]
    else:    
        output[num] = ["Buzz"]

output

After feeling like I succeeded by getting the correct output, I decided to try and do the same in PowerShell by attempting to reuse my code but became stuck as there is not an alternative to the Python range() sequence type in PowerShell that would count in multiples.

So, over to google to look for a PowerShell solution. I found a blog post by Devin Leaman. After taking a peek at their code, it dawned on me that I could use the % (remainder) operator.

For a great explanation about how to tackle the FizzBuzz question, this Tom Scott video on YouTube is worth a watch.

Refined

Using this new found information by losing the List sequence type and making use of the remainder operator you get the below which is way more elegant than what I came up with initially and it translates to PowersShell.

Python

for num in range(1,101):
    output = ""
  
    if num % 3 == 0: output += "Fizz"
    if num % 5 == 0: output += "Buzz"
    if output == "": output = num
  
    print(output)

PowerShell

ForEach-Object ($num in 1..100)
{
    $output = ""
  
    if ($num % 3 -eq 0) { $output += "Fizz" }
    if ($num % 5 -eq 0) { $output += "Buzz" }
    if ($output -eq "") { $output = $num }
  
    Write-Output $output
}

Hope you are visiting after attempting the question yourself 😀

The Beginner Developer Learning Center

I have always wanted to learn to program and now I have the help and support.

“The Beginner Developer Learning Center – a centralized learning environment specifically targeted to beginning programmers. Here you’ll find a rich array of learning content that starts with the very basics, and guides you through step-by-step to becoming a fully-fledged developer!”

No experience or programming knowledge required – so dive right in!

Get Started

Decide if you’re interested in either Web or Windows Development Tracks

Assess your skill level and Lesson Tier

Download, install & register one of the Visual Studio Express Editions for free

Check out My Learning Path to get an overview of the lessons contained in each development track

Read More