From 1 to 100, print "ping" if multiple of 3, "pong" if multiple of 5, or else print the number

fizzbuzz, javascript

Solution

Your solution is quite satisfactory IMHO. Tough, as half numbers are not multiple of 3 nor 5, I'd start the other way around:

for (var x=1; x <= 100; x++){
    if( x % 3 && x % 5 ) {
        document.write(x);
    } else {
        if( x % 3 == 0 ) {
            document.write("ping");
        }
        if( x % 5 == 0 ) {
            document.write("pong");
        }
    }
    document.write('<br>'); //line breaks to enhance output readability
}​

Fiddle

Also, note that any number other than `0` and `NaN` are truthy values, so I've removed the unnecessary `!= 0` and some pairs of parenthesis.

Here's another version, it doesn't make the same modulus operation twice but needs to store a variable:

for (var x=1; x <= 100; x++) {
    var skip = 0;
    if (x % 3 == 0) {
        document.write('ping');
        skip = 1;
    }
    if (x % 5 == 0) {
        document.write('pong');
        skip = 1;
    }
    if (!skip) {
        document.write(x);
    }
    document.write('<br>'); //line breaks to enhance output readability
}

Fiddle

Problem

I just came home from a job interview, and the interviewer asked me to write a program: It should, count from 1 to 100, and print... If it was multiple of 3, "ping" If it was multiple of 5, "pong" Else, print the number. If it was multiple of 3 AND 5 (like 15), it should print "ping" and "pong". I chose Javascript, and came up with this: ``` for (x=1; x <= 100; x++){ if( x % 3 == 0 ){ write("ping") } if( x % 5 == 0 ){ write("pong") } if( ( x % 3 != 0 ) && ( x % 5 != 0 ) ){ write(x) } } ``` Actualy, I left very unhappy with my solution, but I can't figure out a better one. Does anyone knows a better way to do that? It's checking twice, I didn't like it. I ran some tests here at home, without success, this is the only one that returns the correct answer...

Original source