カメヲラボ

主にプログラミングとお勉強全般について書いてます

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コードを、次回公開することにする。

続く