Best One Liner

最高のワンライナー

受賞者:Mark Schnitzius

引用元:https://www.ioccc.org/1995/schnitzi.c

審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/1995/schnitzi.hint

動作

因数を列挙する。

$ gcc -o schnitzi schnitzi.c

$ ./schnitzi 24
2
3
4
6
8
12
24
Floating point exception

Floating point exceptionは仕様。詳しくは解説で。

解説

96バイトの短さもさながら、やり方がおもしろい。 割る数nごとにfork()を行い、n /= !(atoi(argv[1])%n)を計算する。 問題の数がnで割り切れるときこの文は特になにもせず(n /= 1をやるだけ)、プログラムはnを表示して終わる。 割り切れないときゼロ除算を引き起こし、シグナル終了(Floating point exception)するので、nの表示は行われない。