一時変数を利用せずにスワップを作る

http://d.hatena.ne.jp/Will_NET/20051227
http://d.hatena.ne.jp/Will_NET/20051228

a = a - b;
b = a + b;
a = b - a;

なるほど。

   A +-------------+
   B +---------+
    減算
NewA            +---+
    ↓
NewA            +---+
   B +---------+
    加算
NewB +--------------+
    ↓
NewB +--------------+
NewA            +---+
    減算
NewA'+---------+
    ↓
NewA'+---------+
NewB +--------------+

ということか。絵にかくと無駄に判りやすくなるがこんな程度は直感的に理解しなくてはハッカー失格だと言えよう。
そして私はハッカー失格だorzしかし、ハッカーとしては失格でもわかり易いプログラムを書く人間にはなれる。
参照元のエントリでも、よほど特殊な事情で無い限り最終的には一時変数を使った方がわかり易いという結論となっているので、私はおとなしく馬鹿でも読めるプログラムを書いてゆこうと思う。