一時変数を使わないスワップ関数の実装

”世界で戦うプログラミング力を鍛える150問”から問題を解いた.

一時変数を使用せずにスワップを実装する.

方針

2変数a,bの差dを利用する. すなわちa=b+d,b=a-dということをコードで表す.

差が正負どちらでもこのルールは共通なので差のとり方は問題ではない.

更にデータを2進数で取り扱うと,数値型以外の型にもスワップ関数が書ける. 2進数の場合,値の和と差の演算はGF(2n)よりXORで等しい.

コード

例をpythonで示す.

数値型の場合

ビット演算の場合

解いてみて

ビット演算に直したほうが汎用性があって良いのはもちろん3回の計算の処理が全く同じところがもう凄い綺麗で凄い.

広告を非表示にする