Writing FizzBuzz

后端 未结 30 1911
庸人自扰
庸人自扰 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:06

    I am a beginner, here is my attempt:

    public void DoFizzBuzz()
       {
           for (int i = 1; i < 101; i++)
           {
    
               if ((i % 3 == 0) && (i % 5 == 0))
               {
                   Console.WriteLine("{0} FizzBuzz", i);
               }
               else if (i % 3 == 0)
               {
                   Console.WriteLine("{0} Fizz", i);
               }
               else if (i % 5 == 0)
               {
                   Console.WriteLine("{0} Buzz", i);
               }
               else
               {
                   Console.WriteLine(i);
               }
    
           }
           Console.ReadLine();
       }
    

    Is there anything wrong with my approach? Mine seems a lot simpler than everyone's else approach so it must be wrong.

    0 讨论(0)
  • 2020-12-04 09:07

    A functional approach...

    Console.WriteLine(Enumerable
        .Range(1,100)
        .Aggregate("", 
            (a,i) => a + "\n" + (i%15==0 ? "fizzbuzz" : 
                                    (i%5==0 ? "buzz" :
                                        (i%3==0 ? "fizz" : i.ToString())))));
    
    0 讨论(0)
  • 2020-12-04 09:08

    I'll add mine even though there's 20 other solutions already written: It goes like this....

    var x = 1;
    while (x <= 100)
    {
         if (x % 3 == 0 && x % 5 == 0)
            {Console.Writeline("FizzBuzz");}
         else if (x % 3 == 0)
            {Console.Writeline("fizz");}
         else if (x % 5 == 0)
            {Console.Writeline("Buzz");}
         else
            {Console.Writeline(x);}
         x++ 
    }
    

    First solution I came up with. Simple, to the point and gets the job done. No need for bool.

    0 讨论(0)
  • 2020-12-04 09:09

    I tried to solve this problem without looking at the answers. It took me 3 hours to succeed. (I'm just a hobby programmer by the way so don't bash me hard please :)) This is my c# version solution:

            static void Main(string[] args)
        {
    
            for (int i = 1; i <= 100; i++)
            {
                if(  ((i % 3) != 0) && ((i % 5) != 0))
                {
                    WriteLine($"{i}");
                }
                else
                {
                    if ((i % 15) == 0)
                    {
                        WriteLine("FizzBuzz");
                    }
                    else if ((i % 3) == 0)
                    {
                        WriteLine("Fizz");
                    }
                    else if ((i % 5) == 0)
                    {
                        WriteLine("Buzz");
                    }
                }                 
            }
        }
    
    0 讨论(0)
  • 2020-12-04 09:10

    I think your implementation is unnecessarily complex. This one does the job and is easier to understand:

    public void DoFizzBuzz()
    {
        for (int i = 1; i <= 100; i++)
        {
            bool fizz = i % 3 == 0;
            bool buzz = i % 5 == 0;
            if (fizz && buzz)
                Console.WriteLine ("FizzBuzz");
            else if (fizz)
                Console.WriteLine ("Fizz");
            else if (buzz)
                Console.WriteLine ("Buzz");
            else
                Console.WriteLine (i);
        }
    }
    
    0 讨论(0)
  • 2020-12-04 09:11

    Take advantage of conditional format specifiers to get a nicely golfed version:

    public void DoFizzBuzz()
    {
        for(int i=1;i<101;i++)Console.WriteLine("{0:#;}{1:;;Fizz}{2:;;Buzz}",i%3*i%5==0?0:i,i%3,i%5);
    }
    
    0 讨论(0)
提交回复
热议问题