Cabric Number Problem(4)
- 惊奇的短代码(三) qsort Hack(下)
前回の続き。
p(int*a){return*a-*1[&a]);}
ここからさらに縮めるには、returnを書かない方法を考えるしかない。
gccでは、関数の最後に代入文を書くと、returnと書かなくても代入された値が返るということに気付いた。
すなわち、適当なグローバル変数を用意して、
n; p(int*a){n=*a-*1[&a]);}
のように書けば、ちゃんと値が返ってくるれるというわけである。知ってしまえばどうということはないのだが、なかなか気付きにくい。
そんなわけで、qsortを使う問題はすべて今までの最短コードを更新できるようになった。私も気づいたところはいくつか修正してSubmitしなおしたが、まだまだ縮む問題があるはず。qsortを使う問題が出てきた時は、是非このHackを利用して欲しい。
というわけで、このあたりのテクニックも使用しながら到達した232Bコードを、次回公開することにする。
続く