Thứ Hai, 25 tháng 8, 2014

[Giải trí] FizzBuzz

Thấy bài toán khá nhí nhố:
Cho dãy số i từ 1 đến 100. In ra “Fizz” nếu i là bội của 3, in “Buzz” nếu i là bội của 5 và “FizzBuzz” nếu bội của 3 và 5.

Khai thật nhé với một bài toán đơn giản như thế này. Bạn sẽ code với python trong bao lâu và code như thế nào ?

Biết mỗi python :D
Đáp án:
print '\n'.join(" %s Fizz"%i *(i%3==0 and i%5!=0)+" %s Buzz" %i *(i%5==0 and i%3!=0)+"% i FizzBuzz" %i *(i%3==0 and i%5==0) for i in range(1,101))

Mất hơn một phút! 
Cái cách dùng điều kiện này nhớ trước mình có đọc qua rồi mà không nhớ ở đâu :|

3 nhận xét:

  1. Em thì hơi dốt xíu nên chỉ biết mỗi PHP:

    for($i=1;$i<=100;$i++){ echo ($i%15==0)?'FizzBuzz':(($i%3==0)?'Fizz':(($i%5==0)?"Buzz":$i)); }

    Chắc số ký tự em ngắn hơn nên em chỉ viết đúng 1 phút thôi :)

    Trả lờiXóa
  2. Em mới học C thôi nên thử giải:
    For(int i=0; i<100;i++)
    {
    if(i%3 == 0) printf("Fizz");
    if(i%5 == 0) printf("Buzz");
    if(i%15 == 0) printf("FizzBuzz");
    }

    Trả lờiXóa
    Trả lời
    1. Sai rồi bạn. Bạn phải kiểm tra chia hết cho 15 trước. Và phải dùng if else. Nếu không thì số chia hết cho 15 sẽ được in ra 2 lần fizzbuzz và ( fizz hoặc buzz)

      Xóa