

Easier Than Fizz Buzz – Why Can't Programmers Print 100 to 1? - oskarth
http://www.thousandtyone.com/blog/EasierThanFizzBuzzWhyCantProgrammersPrint100To1.aspx

======
meric
_Either ways the sad reality of where the IT industry stands today is that you
don 't even need Fizz Buzz to differentiate a bad non-programmer from a good
one - Just asking them to print 100 to 1 is usually good enough._

The point of FizzBuzz is to differentiate whether a person is a non-
programmer, or a programmer. It is necessary but not sufficient to determine
whether a programmer is _good_. It's important to note non-programmers are not
necessarily bad _persons_ , they just aren't programmers.

------
decker
That's cool, but then again, this guy likely just failed fizz-buzz for
producing a graph showing correlation.

~~~
tempestn
Ha, that was my first thought too! Would be a lot more logical to put whining
on one axis and capability on the other.

------
colanderman
Suggest graphing whining on one axis and coding on the other. Graphing them
both on the same axis vs. candidate # is unhelpful. (And you should never
connect data points which have no meaningful interpolation with lines. It's
misleading.)

------
hn_user2
I find it interesting that they moved onto the next question after a candidate
gave up on the problem after 10 minutes.

Am I coldhearted for thinkng this is were you end the interview and go back to
your desk to get some work done?

~~~
blub
That's too harsh. We have a rule for instance that we continue the interview
for a minimum time, even if the candidate is doing badly.

They might be very nervous, having a bad day, etc.

------
GregBuchholz
Any thoughts on golfing it smaller than:

    
    
        for(int i=0;i<100;printf("%d\n",100-i++));
    

...I'm assuming we're talking C, with the appropriate includes, and main,
etc..

~~~
zem
or antigolfing it :)

    
    
        for (int i=0;i;);
        printf("100\n");
        printf("99\n");
        /*...*/
    
        // or if you want to be a smartass
        printf("100 to 1\n");

~~~
tempestn
I really hope someone tried that in the interview.

------
rrich
// Duff's Buzz

#include<stdio.h>

int main(){

    
    
        register count = 0x64;
        register a = 0x0;
    
        {
        register n = (count + 0x9) / 0xa;
        switch (a=count % 0xa) {
        case 0: do {    printf("%d\n", n*0xa+a);
        case 9:     printf("%d\n", n*0xa+a-0x1);
        case 8:     printf("%d\n", n*0xa+a-0x2);
        case 7:     printf("%d\n", n*0xa+a-0x3);
        case 6:     printf("%d\n", n*0xa+a-0x4);
        case 5:     printf("%d\n", n*0xa+a-0x5);
        case 4:     printf("%d\n", n*0xa+a-0x6);
        case 3:     printf("%d\n", n*0xa+a-0x7);
        case 2:     printf("%d\n", n*0xa+a-0x8);
        case 1:     printf("%d\n", n*0xa+a-0x9);
                    } while (--n > 0x0);
        }
        }
        return 0;
    }

~~~
golergka
Love it. Immediately shows a potential employer how readable and maintainable
your code will be.

------
geebee
Couple things.

First, yeah, this should be easy.

Second, yeah, you should do almost anything other than whine. That certainly
includes improving your skills.

Third, there's plenty to object to in the hiring process and work environment
for many software developers, and I certainly don't think all of it should be
dismissed as "whining".

------
wcdolphin
Is there something wrong with the following? I feel like I am somehow missing
the complexity of the problem. Framing it as "Count down from 100 to 1" makes
the implementation read like the problem.

for(int i=0; i< 100; i++){ System.out.println(100-i); }

~~~
TheLoneWolfling
There isn't any complexity.

It's "just" that there are many people who don't exactly problem-solve well.

I've noticed this before. I've taken classes where people produce decent,
although not great, assignments, and then turn around and get <20% on a test.

------
jbergens
I still view this as a way to separate those who can hardly program at all
from those who can. It is probably not a good way to measure if anyone is a
great developer. The first part should probably be possible to answer by just
talking to the person and to a few people he has worked with.

Besides my main arguments agains this there is another problem with this kind
of questions: when the questions become known and people start writing answers
all over the net (just look at a lot of comments on this page) someone could
learn the answer without being or getting good at programming.

------
nallerooth
I understand that even simple problems may seem difficult when you're under
stress (being interviewed). I know that I perform a lot worse under those
conditions than under "normal stress", as I have to prove myself to someone
else and not just to myself. But with that said, this shouldn't be a problem
for anyone who have been programming for a year or more.

------
Jemaclus
Hmm. This post seems to imply that whining correlates with poor coding
abilities. I'm not sure I buy that. And as a tongue-in-cheek observation, what
does taking the time to write about whining about people not being able to
code mean for this guy's coding abilities? :)

------
jmnicolas
It took more time for Visual Studio to launch a new project than for me to
solve the problem.

However I whine a lot ... but it could be that the situation is really bad at
my job.

Am I hired ? :-)

------
dysan819
in python

    
    
       for i in range(100):
           print(100 - i)
    

(there is no 'for (int i=0;' in python, but this analogous.)

~~~
heyalexej

        print [i for i in reversed(range(101))]

~~~
robkix
Why reversed range? Range is fully capable of descending [1]

You also missed the point of the exercise: start at 0 in your index, but count
backward from 100 in output. So the map is 0->100, 1 -> 99, ..., 99 -> 1, 100
-> 0

[1]
[https://docs.python.org/2/library/functions.html#range](https://docs.python.org/2/library/functions.html#range)

~~~
heyalexej
Soooo, I won't get the job?

------
Zikes

        echo 100-i;

~~~
ljw1001
for (i = 0; i >-100; i--) print i + 100;

~~~
ljw1001
nailed it with no whining :)

------
0hn0
PHP:

for($i=0;$i<100;$i++) echo 100-$i."\n";

~~~
0hn0
or

for($i=0;;) echo 100-$i>0?100-$i++."\n":exit;

------
Keloran
for (int i = 0; i < 100; i++) { int j = 100; std::cout << (j - i) <<
std::endl; }

------
cjbar
Took me longer than 2 minutes, I don't use this trick very often ._.

for(int i = 0, t = 100; i < 100; i++) { Console.WriteLine(t--); }

~~~
jpatokal
You're not following the rules: must start with "for(int i=0;", not "...,".

Hint: You don't need "t".

~~~
cjbar
haha, yeah I realized that later, thanks :(

------
niix

      for (i = 100; i >= 0; i-=1) { console.log(i) }

~~~
c17r
You didn't read the part where your solution has to begin with "for(int i=0;"
with nothing before it.

~~~
niix
Oops. I guess that's my demise then.

