最高のショートプログラム
受賞者:Raymond Cheong
動作・解説にジャンプ »
引用元:https://www.ioccc.org/2001/cheong.c
審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/2001/cheong.hint
任意精度で整数の平方根を求める。
$ gcc -o cheong cheong.c $ ./cheong 81 9 $ ./cheong 1024 32 $ ./cheong 012345678987654321 111111111
偶数桁でないといけない。奇数桁の場合は先頭に0をつける。
コード形状は”√”の形になっている。驚きの小ささ。
基本的には開平法で求めていると思う。 完全には理解できていないが、1つのcharに20進数の1桁と10進数の1桁を重ねてもたせる(20で割った余りが前者、20で割った商が後者)とか、main関数の再帰でうまく扱えるように値が負の範囲になるように調整する(argcは通常起動時は正なので、それと区別する)とか、非常にトリッキーなコードになっている。
char
main
argc