最高のワンライナー
受賞者: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の表示は行われない。
n
fork()
n /= !(atoi(argv[1])%n)
n /= 1