質問編集履歴

1 ベストアンサーの方への返信

mightyMask

mightyMask score 125

2017/06/14 20:14  投稿

c言語 FizzBuzz
c言語を用いてFizzBuzzを実装する話ですが、調べてみると最短73バイトで記述できると出てきますが、これはどこの誰が書いたのでしょうか。
FizzBuzzの実装と言ってもいくつかルールは必要ですよね。
・改行で区切るのか空白で区切るのか区切らなくていいのか。
・どこまでまで繰り返すのか。または無限ループなのか。
・ANSI規格のコンパイラに通らなくてはいけないのか否か。(否ならどのコンパイルを使うのか。警告は許容するのか。)
私なりに試行錯誤の結果、
・区切らない
・無限ループ
・gcc 5.3.0 なら 警告は出るがコンパイルは通る。
というルールなら71バイトで記述できたのですが。
ANSI規格についてはよく分かってませんが、警告はでるけどコンパイル通るって事はたぶんありえないですよね。それを満たして73バイトはさすがに絶対不可能かと思うのですが。
ANSI規格についてはよく分かってませんが、警告はでるけどコンパイル通るって事はたぶんありえないですよね。それを満たして73バイトはさすがに絶対不可能かと思うのですが。
#追記
```c
main(i){for(;i<101;puts("Buzz"-i*i++%5))printf(i%3?i%5?"%d":0:"Fizz",i);}
```
たぶんこれがそうですかね。
掲示板のまとめサイトみたいなものでしょうか。
私の環境だと
```
1z
2
Fizzz
4Buzz
Buzz
Fizzz
7
8z
FizzBuzz
Buzz
11z
Fizz
13z
14Buzz
FizzBuzz
16z
17
Fizzz
19Buzz
Buzz
Fizzz
22
23z
FizzBuzz
Buzz
26z
Fizz
28z
29Buzz
FizzBuzz
31z
32
Fizzz
34Buzz
Buzz
Fizzz
37
38z
FizzBuzz
Buzz
41z
Fizz
43z
44Buzz
FizzBuzz
46z
47
Fizzz
49Buzz
Buzz
Fizzz
52
53z
FizzBuzz
Buzz
56z
Fizz
58z
59Buzz
FizzBuzz
61z
62
Fizzz
64Buzz
Buzz
Fizzz
67
68z
FizzBuzz
Buzz
71z
Fizz
73z
74Buzz
FizzBuzz
76z
77
Fizzz
79Buzz
Buzz
Fizzz
82
83z
FizzBuzz
Buzz
86z
Fizz
88z
89Buzz
FizzBuzz
91z
92
Fizzz
94Buzz
Buzz
Fizzz
97
98z
FizzBuzz
Buzz
```
と少々おかしな結果になりますが、違う環境なら上手くいくんですかね。
  • C

    8884 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る