At Codeslingers last night, someone pulled out some coding Katas. For those who don’t know, a Kata is a coding exercise that is designed to practice your programming skills, rather than to solve a particular business problem. I was handed the classic “FizzBuzz” problem. The assignment:
Create a function that will print the integers from 1 to 100 with the following exceptions:
- If a number is divisible by 3, print the word “Fizz” in place of that number.
- If a number is divisible by 5, print the word “Buzz” in place of that number.
- If a number is divisible by both 3 and 5, print the word “FizzBuzz” in place of that number.
The output should look something like the following:
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16
I started with a C# console application because that is the language with which I am most familiar. It was able to finish the following in under 2 minutes. It took me 5 minutes to write the unit tests.
class Program { static void Main(string[] args) { for (int i = 1; i < 100; i++) { var p = FizzBuzz(i); Console.WriteLine(p); } Console.ReadLine(); } protected static string FizzBuzz(int i) { if (i % 15 == 0) return "FizzBuzz"; if (i % 3 == 0) return "Fizz"; if (i % 5 == 0) return "Buzz"; return i.ToString(); } }
I only occasionally code in JavaScript, so I tackled that language next. Someone recommended using http://jsfiddle.net/
as an online IDE for writing and sharing JavaScript, so I tried it and liked it. Of course, JavaScript is a dynamic language and one of my big challenges was spelling things correctly without all the help Visual Studio provides when writing in a statically-typed language. In my case, I misspelled the id of a div, which cost me at least 15 minutes. I created the following boilerplate HTML:
"fizzbuzz">
Then, I used the following JavaScript (plus a bit of jQuery) to output the FizzBuzz results:
for (i = 1; i <= 100; i++) { $("#fizzbuzz").append(function() { var newLine = i; if (i % 3 === 0) { newLine = "Fizz"; } if (i % 5 === 0) { newLine = "Buzz"; } if (i % 15 === 0) { newLine = "FizzBuzz"; } var newDiv = $("").text(newLine); return newDiv; }); }A simple program like this provides a fun way to practice an old language and to learn a new language. Next up, I’ll try this program with F# and Ruby, since I have very little experience with these languages.