45 comments

[ 2.9 ms ] story [ 109 ms ] thread
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? :)

    echo 100-i;
I actually got it right in under 1 minute, to my surprise...
for (i = 0; i >-100; i--) print i + 100;
nailed it with no whining :)
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".

That's cool, but then again, this guy likely just failed fizz-buzz for producing a graph showing correlation.
Ha, that was my first thought too! Would be a lot more logical to put whining on one axis and capability on the other.
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.

  for (i = 100; i >= 0; i-=1) { console.log(i) }
You didn't read the part where your solution has to begin with "for(int i=0;" with nothing before it.
Oops. I guess that's my demise then.
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..
(comment deleted)
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");
I really hope someone tried that in the interview.
for(int i=0;i<99;printf("%d\n",101-++i));
You can easily save one more character. The problem doesn't say anything about newlines.

    for(int i=101;--i;)printf("%d\n",i);
Assuming int main(int a) we can do

    a<100&&main(a+1);printf("%d\n",a);

EDIT: missed constraint that it needs to start with for(int i=0 from article.
It's too bad the constraint wasn't what you said it was, because then you could do:

for ( int i = 0144;

or

for ( int i = 0x64;

Unfortunately, the constraint was "for ( int i = 0;". :-/

(comment deleted)
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--); }

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

Hint: You don't need "t".

haha, yeah I realized that later, thanks :(
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); }

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.

(comment deleted)
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?

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.

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.)
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.
// 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;
}
Love it. Immediately shows a potential employer how readable and maintainable your code will be.
in python

   for i in range(100):
       print(100 - i)
(there is no 'for (int i=0;' in python, but this analogous.)
PHP:

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

or

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

(comment deleted)
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.

(comment deleted)
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 ? :-)

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