Writing FizzBuzz

后端 未结 30 2047
庸人自扰
庸人自扰 2020-12-04 08:50

Reading the coding horror, I just came across the FizzBuzz another time.

The original post is here: Coding Horror: Why Can\'t Programmers.. Program?

For thos

30条回答
  •  北海茫月
    2020-12-04 09:22

    Obviously this is a bit outside the spirit of the FizzBuzz challenge. But in my benchmark this was the fastest I could make it while single threaded and still terminating at 100. It is semi-unrolled and uses a StringBuilder. It is approximately three times faster than the standard approach.

    const string FIZZ = " Fizz\n";
    const string BUZZ = " Buzz\n";
    const string FIZZBUZZ = " FizzBuzz\n";
        ...
    var sb = new StringBuilder();
    int i = 0;
    
    while(true)
    {       
        sb.Append(i+3);
        sb.Append(FIZZ);        
        sb.Append(i+5);
        sb.Append(BUZZ);        
        sb.Append(i+6);
        sb.Append(FIZZ);        
        sb.Append(i+9);
        sb.Append(FIZZ);        
        sb.Append(i+10);
        sb.Append(BUZZ);        
        if(i+12 > 100)
            break;
        sb.Append(i+12);
        sb.Append(FIZZ);    
        i+=15;
        sb.Append(i);
        sb.Append(FIZZBUZZ);
    }
    
    Console.Write(sb.ToString());
    

提交回复
热议问题