5 ms·
I just got thrown the FizzBuzz test a couple days ago. First time I had ever seen it. Startled me that everyone else knows what it is too! I don't know if it wo
by ebtalley 16y ago
I just got thrown the FizzBuzz test a couple days ago. First time I had ever seen it. Startled me that everyone else knows what it is too! I don't know if it would be blindingly obvious without the mod operator.
- pyre 16y agoI would consider the mod operator to be pretty basic though. (Feel free to call me out if I'm just being naive.) Outside of the mod operator, you could always use a combo of floor() and ceiling() (which I assume most languages have in a standard library). e.g.: from math import floor,ceil def divisible_by_3(n): result = n / 3.0 return ceil(result) == floor(result) Or even more basic: def divisible_by_3(n): result = n / 3.0 return int(result) == result
- chipsy 16y agoThe main danger with using the mod operator is that you can get an off-by-one if you aren't in the habit of using it and forget the exact definition. If that's in doubt, rolling your own thing with a division or a while/if makes for a stronger guarantee of success on the first try. In an interview you could explain your reasoning for such a detour as well, which might work out better than just "knowing the answer."
- robinduckett 16y agoI used the old int(i) == i (or even, int(i/2) == i/2) way before I knew about the mod operator.
- deleted 16y ago[deleted]
- patio11 16y agoLet's see: x / y * y == x iff x % y == 0, if your language handles integer division like most do. If your language doesn't do integer division that way, the naive approach is even easier if you know how to round: x / y == round(x / y) iff x % y == 0. There are many, many other approaches which will work, too. I saw one guy hand-build an array of ints, initialize to zero, loop over it once with arr[i++] = 0; arr[i++] = 0; arr[i++] = 3 to set the multiples of 3, then do the same thing with the fives except checking to see if there was already a 3 there, then looping over the array a fourth time to handle the actual printing. That is the kind of competent, worksmanlike programming that runs the world while the can't-do-FizzBuzz guys are hopefully not touching the code too much.
- robinduckett 16y agovar s = require('sys'); for (var i = 1; i < 101; i++) { if (i%3 == 0 && i%5 == 0) s.puts('fizzbuzz'); else if (i%3 == 0) s.puts('fizz'); else if (i%5 == 0) s.puts('buzz'); else s.puts(i); } node.fizzbuzz.js