4 ms·
FizzBuzz is easy iff you are aware of the % operator. I only know how to test for divisibility (cleanly) because I looked it up in the course of doing Project E
by superuser2 12y ago
FizzBuzz is easy iff you are aware of the % operator. I only know how to test for divisibility (cleanly) because I looked it up in the course of doing Project Euler. I could easily see there being developers who worked exclusively on non-mathy business logic and never had to test divisibility, which would explain floundering on FizzBuzz. (Then they should be able to reset counters every 3 and 5 iterations or something, but that's a tad more involved than the canonical solution and might be regarded by some interviewers as incorrect.)
- x0x0 12y agoAre you a js engineer? It's hard to imagine someone could write c, c++, java, python < 3, or probably c# without cleanly understanding the modulus operator, because System.out.println("" + 3/4); (or the moral equivalent) prints 0 in all the above languages. Every developer gets bit by integers performing integer division.
- mattmanser 12y agoUhhh, the mod operator is not the solution to that problem though. In reality you'd only use a mod operator if you were doing things like sorting into 4 columns or doing an operation on every 3rd thing. And it's not a concept that is introduced at school. Now I try to think of it, I think I only picked up mod when I was learning rounding in my first language and the man page happened to mention modulus at the same time.
- x0x0 12y agoThe mod operator isn't the solution to that problem, but that problem shoves integer division in your face. If a dev sees that and isn't curious enough to understand there is a division operator and a remainder operator, just like when you studied fractions in 3rd grade, I don't know that I want to work with that person. And every dev should have hit the remainder operator at bare minimum when they had a long running loop and wanted to print a status every kth operation, eg for(int i=0; i < 100000000; i++){ // some operation if(i % 100000 == 0) printf("** operating on count %d\n", i); } or when processing a big file, printing every k lines; or when running a slow operation, printing every k seconds; or ...
- mattmanser 12y agoNo, because for most of those problems there's an easy alternative, declare another counter variable and you can just go: z++; if(z>100000) { print x; z=0; } When I was taught maths there was no emphasis on remainders and it certainly wasn't denoted with a % sign. I vaguely remember writing something like 12r3 in primary school. The r meaning remainder. A brief search on SO and lo and behold: http://stackoverflow.com/questions/1504420/c-what-does-the-percentage-sign-mean http://stackoverflow.com/questions/1504420/c-what-does-the-p... Viewed 38,000 times. Every language probably has a similar question.
- vidarh 12y agoWhile I learned about the modulus operator at a young age, I grew up programming in environments where "nobody" used floats because the CPU's in question didn't have FPUs, and floating point operations resulted in costly library calls. While only "older" (I'm 39) developers will be likely to have been in that situation, it took another decade after I moved onto hardware with FPU's before I worked on anything where we actually used floating point math. Instead we'd be working with fixed point stored in integer. E.g. for financial systems, floating point is a nightmare. Working with fixed point to whatever number of decimal points our accounting department wanted (5-6 typically) for tax calculations and the like was preferred. So there are large number of areas where people can have worked successfully for many years without ever using floating point.
- superuser2 12y agoI mean, I know about the mod operator because I did Projrct Euler problems in middle school, but if I hadn't, nothing I've done since would have made me learn it. The extent of the math I've had to do was tracking send buffers in C, which was just addition and less than/equal to.
- DanBC 12y agoFizzbuzz is useful because people fail it even if you give them info about loop structures and info about mod operators. It's only sometimes about people not being aware of a language feature. It's usually about people not being able to program.
- cstrahan 12y agoA naive implementation of % is pretty trivial, so even if they weren't aware of the operator, I would at least expect them to write an equivalent function.
- RogerL 12y agofizzbuzz can be modified to remove knowledge of the modulus operator. "write a function that loops through an array and prints 'fizz' if it equals the parameter 'a', 'buzz' if it is -a, otherwise print the value of the element". Or something like that. This tests writing a function declaration, passing values in as parameters, iterating over an array, writing an if statement, and printing. That seems pretty basic and fair to me.