Imran on Tech recently wrote about using FizzBuzz to Find Developers who Grok Coding. The post basically talks about asking job interviewees to write a simple piece of code based on the following:
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”.
The point of the exercise being that there are a surprising number of people which fail this simple task, however what follows in the comments is a flurry of hastily coded FizzBuzz samples and amusing discussion (actually similar to a Slashdot comments thread), to the point where Jeff Atwood of Coding Horror declares that FizzBuzz is the programmer's stairway to heaven.
There are now examples out there for pretty much every language.. Well, almost every language. I was trying to think about my least favourite language to code in (of the languages which I do regularly or semi-regularly code in, not something like Assembly or IL), and found that there is no Notes @Function FizzBuzz code - until now!
The first quick as you please attempt, which took a couple of minutes as I woke my brain up. This was sitting as the default value formula for a text field on a Notes form. I also added @NewLine to the end of each iteration of the loop to add readability.
@For(n := 1; n <= 100; n := n + 1;output := output + @If(@Modulo( n ; 3 ) = 0 & @Modulo( n ; 5 ) = 0; "FizzBuzz";@Modulo( n ; 3 ) = 0; "Fizz"; @Modulo( n ; 5 ) = 0; "Buzz" ; @Text(n) ));output;
I don't like this solution due to it needing 3 checks in the @If block. It seems clunky and slightly inelegant, even though it works. So the next version took a 30 second re-write, to come up with this uglier variant:
@For(n := 1; n <= 100; n := n + 1; tmp := @If(@Modulo( n ; 3 ) = 0; "Fizz"; ""); tmp := tmp + @If(@Modulo( n ; 5 ) = 0; "Buzz"; ""); output := output + @If(@Length(tmp) =0; @Text(n); tmp ));output;
This works, but it's even uglier. I'm sure there must be a simpler and more convoluted way to do it, but it'd past midnight and I can't really concentrate. I realise that this is perverting the point of the exercise, and that I'm now trying to create the worst and ugliest FizzBuzz code, but I'm sure that there must be an @Function example out there which works AND makes me wince at the same time. Come on people, help me out..
About me
My name is Ross Hawkins and I'm a developer, consultant, business owner and writer based in Auckland,
New Zealand (pictured below!). My current work revolves around ASP.NET, C#, jQuery, Ajax,
SQL Server, and a mix of other Microsoft development technologies.
I also have about 15 years of experience with IBM Lotus Notes/Domino and associated technologies. While Notes/Domino
is no longer my primary focus I still like to dabble and keep my skills up to date.
I own and run 2 businesses - Hawkins Consulting Services,
and Ignition Development.
Search
Popular Content
Troubleshooting WebResource.axd
The .NET 2.0 framework changed the way clientside JavaScript is
delivered to the browser. Previously, ASP.NET 1.1 used the
aspnet_client directory whereas now 2.0 uses WebResource.axd.
Published on October 8, 2006
jQuery Wildcard Selectors - some simple examples
I wrote about jQuery wildcard selector syntax briefly back in 2009, and since then that post has received a lot of views – way more than a post that brief should ever have seen..
Published on October 14, 2011
Microsoft AJAX Extensions: Sys.Debug is null or not an object
One of the breaking changes which was made with
the 1.0 release of the Microsoft Ajax Extensions was the renaming
of the 'Debug' class to 'Sys.Debug' for reasons of compatiability
with other frameworks. Breaking changes like this can often be a source of frustration..
Published on May 22, 2007
Simple ASP.NET Character Counter
A textbox character counter is a pretty simple piece of functionality, and there's a lot of different ways to apply one to your application. The following method is nice and simple, and can be done using only clientside JavaScript if required, or combined with server side code in order to create a more dynamic effect
Published on December 4, 2006
Adding Tooltips to Gridview Headers
As the title says, this is a very simple but dynamic way of achieving tooltip text on a header column. It's not overly flash, but it's lightweight and quick to implement.
Published on April 15, 2007
Archives
May, 2012 (1)
April, 2012 (4)
March, 2012 (2)
February, 2012 (4)
January, 2012 (3)
December, 2011 (3)
November, 2011 (8)
October, 2011 (9)
September, 2011 (8)
August, 2011 (5)
July, 2011 (4)
June, 2011 (7)
May, 2011 (5)
April, 2011 (3)
March, 2011 (8)
February, 2011 (4)
January, 2011 (3)
December, 2010 (8)
November, 2010 (5)
October, 2010 (6)
September, 2010 (7)
August, 2010 (11)
July, 2010 (12)
June, 2010 (8)
May, 2010 (8)
April, 2010 (4)
March, 2010 (8)
February, 2010 (6)
January, 2010 (12)
December, 2009 (13)
November, 2009 (11)
October, 2009 (12)
September, 2009 (12)
August, 2009 (2)
July, 2009 (7)
June, 2009 (12)
May, 2009 (9)
April, 2009 (9)
March, 2009 (9)
February, 2009 (8)
January, 2009 (7)
December, 2008 (6)
November, 2008 (7)
October, 2008 (9)
September, 2008 (12)
August, 2008 (9)
July, 2008 (6)
June, 2008 (24)
May, 2008 (13)
April, 2008 (16)
March, 2008 (8)
February, 2008 (10)
January, 2008 (1)
December, 2007 (14)
November, 2007 (11)
October, 2007 (11)
September, 2007 (13)
August, 2007 (11)
July, 2007 (5)
June, 2007 (15)
May, 2007 (11)
April, 2007 (9)
March, 2007 (9)
February, 2007 (10)
January, 2007 (8)
December, 2006 (18)
November, 2006 (11)
October, 2006 (14)
September, 2006 (9)
August, 2006 (10)
July, 2006 (4)
June, 2006 (4)
May, 2006 (6)
April, 2006 (3)
February, 2006 (6)
January, 2006 (10)
September, 2005 (2)
August, 2005 (4)
Post Categories
ASP.NET
AJAX
Amusing
NZ
NZ Trains
Notes/Domino
Visual Studio
Web Development
Miscellaneous
Me
Rugby
C#
SQL