Path: csiph.com!aioe.org!.POSTED!not-for-mail From: Qu0ll Newsgroups: comp.lang.java.programmer Subject: Re: So I did "FizzBuzz", in Java! Date: Mon, 18 Jul 2016 05:23:18 +1000 Organization: Aioe.org NNTP Server Lines: 70 Message-ID: References: NNTP-Posting-Host: FkOGSv1PRtc4MkF6vbp1+Q.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com comp.lang.java.programmer:34943 On 18/07/2016 01:49, Stefan Ram wrote: > I don't know if you have heard of »FizzBuzz«. Otherwise > a web search might explain it to you: > > »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"«. > > Allegedly it's used to test job applicants and allegedly > even programmers with university degrees in the field fail > to be able to program it. > > I have read about it for years, but today I did write it. > > My solution tries to avoid code repetitions and to be > run-time efficient. It's not the smallest solution when > the code size is taken into account. > > public final class Main > { public static void main( final java.lang.String[] args ) > { final java.lang.String eol = java.lang.System.lineSeparator(); > final java.lang.StringBuilder builder > = new java.lang.StringBuilder( 1024 ); > final java.lang.String fizz = "Fizz" + eol; > final java.lang.String buzz = "Buzz" + eol; > final java.lang.String fizzbuzz = "FizzBuzz" + eol; > for( int i = 1; i < 101; ++i ) > { final boolean d3 = i % 3 == 0; > final boolean d5 = i % 5 == 0; > final boolean db = d3 && d5; > if( db )builder.append( fizzbuzz ); > else if( d3 )builder.append( fizz ); > else if( d5 )builder.append( buzz ); > else { builder.append( i ); builder.append( eol ); }} > java.lang.System.out.println( builder ); }} > > I did not avoid to have the string literal »"FizzBuzz"«, > even though one might have combined that from the strings > »Fizz« and »Buzz«, which are already there, but to do so > might be no real improvement. > ZOMG. You think *anyone* would hire you with something they couldn't even read? What's with all the fully qualified Class names? Why are "fizz", "buzz" etc. not static constants and in UPPER CASE? Did you know that Java includes '}' and that it's very dangerous to not surround any if/else clause without them? And, hey, did you *deliberately* try to format the code in as random a way as possible? Oh wait, I know there have been "most obfuscated code" competitions for years, but, sorry, there is at least one "sensible" variable name in there (the 'i' in the "for loop"). -- And loving it, -Qu0ll (Rare, not extinct) _________________________________________________ Qu0llSixFour@gmail.com [Replace the "SixFour" with numbers to email me]