Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从1到100,打印“;平";如果是3的倍数,则为;“庞”;如果是5的倍数,则打印数字_Javascript_Fizzbuzz - Fatal编程技术网

Javascript 从1到100,打印“;平";如果是3的倍数,则为;“庞”;如果是5的倍数,则打印数字

Javascript 从1到100,打印“;平";如果是3的倍数,则为;“庞”;如果是5的倍数,则打印数字,javascript,fizzbuzz,Javascript,Fizzbuzz,我刚从一次工作面试回来,面试官让我写一个程序: 它应该,从1数到100,然后打印 如果是3的倍数,“ping” 如果是5的倍数,“砰” 否则,请打印号码 如果是3和5的倍数(如15),则应打印“ping”和“pong” 我选择了Javascript,并得出以下结论: for (x=1; x <= 100; x++){ if( x % 3 == 0 ){ write("ping") } if( x % 5 == 0 ){ write("

我刚从一次工作面试回来,面试官让我写一个程序:

它应该,从1数到100,然后打印

如果是3的倍数,“ping”
如果是5的倍数,“砰”
否则,请打印号码

如果是3和5的倍数(如15),则应打印“ping”和“pong”

我选择了Javascript,并得出以下结论:

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)
    }
}

对于(x=1;x您的解决方案非常令人满意。很难,因为一半的数字不是3或5的倍数,我从另一个角度开始:

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
}​
这是我的一句台词:

for(var x=1;x<101;x++)document.write((((x%3?'':'ping')+(x%5?'':'pong'))||x)+'<br>');

我写了一些变体(使用<代码> FIZZ和<代码> BuZ.)作为基准来考虑不同的迭代条件逻辑。< /P>

再次获胜:

// Iterate using a recursive function
// firing a callback once per iteration

function f(s,n) {
    if(++n >= 102) return;
    s === '' ? console.log(n-1) : console.log(s);
    !!(n % 3)
        ? !!(n % 5)
            ? f('',n) : f('Buzz',n)
        : !!(n % 5)
            ? f('Fizz',n) : f('FizzBuzz',n);
}

// Iterate using a `while` loop
// firing a callback after satisfying a condition

function b(n) {
    var i = n;
    $:
        while(++i) {
            if(i % 3)
                if(i % 5) 
                    console.log(i);
                else 
                    console.log('Buzz');
            else if(i % 5) 
                console.log('Fizz');
            else 
                console.log('FizzBuzz');
            if(i >= 100) 
                break $;
        }
    return;
}

// Iterate using a `for` loop
// firing a callback once per iteration

function F(n) {
    var i = n, f = 'Fizz', b = 'Buzz', o = '';
    for (; i <= 100; i++) { 
        o = !(i % 3) 
            ? !(i % 5) 
                ? f + b : f 
            : !(i % 5) 
                ? b : i; 
        console.log(o);
    }
    return;
}

// Iterate using a `for` loop
// firing a callback after satisfying a condition

function B(n) {
    var i = n;
    var fiz = 'Fizz';
    var buz = 'Buzz';
    for(; i <= 100; i++)
        if(!(i % 3))
            if(!(i % 5))
                console.log(fiz + buz);
            else
                console.log(fiz);
        else if(!(i % 5))
            console.log(buz);
        else
            console.log(i);
    return;     
}


f('', 1); // recursive
b(0);     // `while`
F(1);     // `for`
B(1);     // `for
//使用递归函数进行迭代
//每次迭代触发一次回调
函数f(s,n){
如果(++n>=102)返回;
s==''console.log(n-1):console.log(s);
!!(n%3)
?!!(n%5)
f('',n):f('Buzz',n)
:!!(n%5)
f('Fizz',n):f('FizzBuzz',n);
}
//使用'while'循环进行迭代
//在满足条件后触发回调
功能b(n){
var i=n;
$:
while(++i){
如果(i%3)
如果(i%5)
控制台日志(i);
其他的
console.log('Buzz');
否则如果(i%5)
console.log('Fizz');
其他的
console.log('FizzBuzz');
如果(i>=100)
打破美元;
}
返回;
}
//使用'for'循环进行迭代
//每次迭代触发一次回调
函数F(n){
变量i=n,f='Fizz',b='Buzz',o='';

对于(;i要消除最后一种情况,您可以使用
继续

for (x=1; x <= 100; x++){

    if( x % 3 == 0 ){
        write("ping")
        continue
    }
    if( x % 5 == 0 ){
        write("pong")
        continue
    }

    write(x)
}
for(x=1;x
for(int number=1;number<100;number++)
{
布尔值shouldPrintNumber=true;
System.out.println(“\n”);
如果((数字%3)=0)
{
系统输出打印(“ping”);
shouldPrintNumber=false;
}
如果((数字%5)=0)
{
系统输出打印(“pong”);
shouldPrintNumber=false;
}
如果(应打印号码)
{
系统输出打印(编号);
}
}

对于var a=1;a这里有一个解决方案,它允许在不添加更多条件的情况下动态列出倍数

// List of outputs
var outputs = [
    {mult: 3, str: 'ping'},
    {mult: 5, str: 'pong'}
    // {mult: 10, str: 'play'} ex: [30] => 'pingpongplay'
];

// Loop 100 times
for (var i = 1, j = 100; i <= j; i += 1) {

    // Set empty vars
    var result, string = '';

    // Loop through the listed output objects
    outputs.forEach(function (output) {

        // If listed multiple, concat string
        if (i % output.mult === 0) {
            string += output.str;
        }

    });

    // Set result
    if (string.length) {
        result = string;
    } else {
        result = i;
    }

    // print result
    document.body.innerHTML += result + '<br>';
}
//输出列表
变量输出=[
{mult:3,str'ping'},
{mult:5,str:'pong'}
//{mult:10,str:'play'}ex:[30]=>'pingpongplay'
];
//循环100次
对于(var i=1,j=100;i{let i=1,o=(a,idx)=>{let r,s='';a.map(v=>{if(idx%v.mult==0)s+=v.str});s.length?r=s:r=idx;返回r};while(i
//创建一个for循环以从0计数到100

对于(让num=0;num我提出的最佳解决方案是:


用于(var i=1;i如果你不想检查它两次,请使用
else If
else If
在哪里?我试过了,但没有正确地工作这是经典的FizzBuzz编程问题,旨在剔除那些不会编程的程序员:不必不高兴,我认为你通过了。这项测试的目的不是为了优雅,而是为了et工作代码。与我的代码没有什么不同,但还是更好,正如我所要求的。谢谢,我已经从很多方面考虑过了,但所有简单的逻辑代码都需要两次检查。我只添加了一个
else
微优化,正如我所说,你的代码在我看来是非常令人满意的。我将尝试在一行代码中重做它,但这是有问题的能让你得到责备。
=]
@BernaMariano更新了答案,现在它不再两次进行相同的计算,但它需要一个变量。这是一行;):
(var x=1,skip;x@shmiddy是的,

确实有助于阅读输出。我将其与主逻辑分开,因为问题没有要求打印新行。添加

使其更具可读性。
=]
+1可能不是最实用的,但比所有和任何JS迷你程序都好。
=/code>很好,b但我认为你永远不会想到站在一块板前,一支笔和5名高级开发人员在等待你的解决方案……更新:在不同浏览器上进行了更多测试后,第三种方法在每秒操作数方面开始与其他方法有所不同。最突出的区别是,它首先通过运行ll逻辑,然后触发一个回调。值得注意的是,我想看到的是一个使用反向循环的示例(例如,
while(I--)
)在我看到这段代码之前,我不明白为什么每个人都对它这么生气operator@ganqqwerty哈哈,是的,我在2013年玩得太开心了……我已经摆脱了这种语法上的疯狂,然而,现在反应/功能风格很流行,它在前端XDC中卷土重来了ode块可能会回答这个问题,如果你能解释一下它为什么会这样做,那将是一个更好的答案。
for (x=1; x <= 100; x++){

    if( x % 3 == 0 ){
        write("ping")
        continue
    }
    if( x % 5 == 0 ){
        write("pong")
        continue
    }

    write(x)
}
 for( int number = 1 ; number < 100 ; number++ )
    {
        boolean shouldPrintNumber = true;

        System.out.println("\n");
        if( (number%3) == 0 )
        {
            System.out.print("ping");
            shouldPrintNumber = false;
        }
        if( (number%5) == 0 )
        {
            System.out.print("pong");
            shouldPrintNumber = false;
        }

        if( shouldPrintNumber )
        {
            System.out.print( number );
        }

    }
for var a = 1; a <= 100 ; a++
{
  if a % 3 == 0 && a % 5 == 0
  {
    println("Fizzbuzz")
    continue
  }
  if a % 5 == 0
  {
    println("Buzz")
    continue
  }
  if a % 3 == 0
  {
    println("Fizz")
    continue
  }
  else
  {
    println(a)
  }
}
// List of outputs
var outputs = [
    {mult: 3, str: 'ping'},
    {mult: 5, str: 'pong'}
    // {mult: 10, str: 'play'} ex: [30] => 'pingpongplay'
];

// Loop 100 times
for (var i = 1, j = 100; i <= j; i += 1) {

    // Set empty vars
    var result, string = '';

    // Loop through the listed output objects
    outputs.forEach(function (output) {

        // If listed multiple, concat string
        if (i % output.mult === 0) {
            string += output.str;
        }

    });

    // Set result
    if (string.length) {
        result = string;
    } else {
        result = i;
    }

    // print result
    document.body.innerHTML += result + '<br>';
}
/*jslint browser: true */
var printOutputs = function (array, iterations) {
    'use strict';
    var i = 1;
    var outputResults = function (arr, idx) {
        var result;
        var str = '';
        arr.forEach(function (item) {
            if (idx % item.mult === 0) {
                str += item.str;
            }
        });
        if (str.length) {
            result = str;
        } else {
            result = idx;
        }
        return result;
    };
    while (i < iterations) {
        document.body.innerHTML += outputResults(array, i) + '<br>';
        i += 1;
    }
};
var outputs = [
    {mult: 3, str: 'ping'},
    {mult: 5, str: 'pong'}
];
printOutputs(outputs, 100);
const pO=(arr,itr)=>{let i=1,o=(a,idx)=>{let r,s='';a.map(v=>{if(idx%v.mult===0)s+=v.str});s.length?r=s:r=idx;return r};while(i<itr){document.body.innerHTML+=`${o(arr,i)}<br>`;i++}};
pO([{mult:3,str:'ping'},{mult:5,str:'pong'}], 100);
for (var i = 1; i <= 100; i++) {
  var message = '';
  if (i%3 === 0) message += 'ping';
  if (i%5 === 0) message += 'pong';
  console.log(message || i);
}