いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

プログラミングで、2つの変数の内容を他の変数を使わずに入れ換える方法

 タイトル、分かりにくいでしょうか。例えば変数をx、yとしてx=a、y=bと代入されているとします。他の変数は使わず、xにbが、yにaが入っている状態にしたいのです。x=bとやればいいでしょ、……というのはナシ。使えるのはx、yと通常の四則としておきます。さあ、少し考えてみてください。

 

 PythonでもCでもBasicでも同様です。次の手順でどうでしょうか。

x=a

y=b

x=x+y

y=yーx

x=x+y

y=ーy

 

変数の内容を追いかけると、

      x    y

-----------------------------------

x=a   a

y=b   a    b

x=x+y a+b  b

y=yーx a+b -a

x=x+y b   -a

y=ーy  b    a

 

これは、行列で行の定数倍と行同士の和だけを用いて行の入れ換えを実行する手順でもあります。何のために……と思うかも知れませんが……。いわゆる行の基本変形には「行の交換」が含まれています。

①行の定数倍

②行の入れ換え

③行を他の行に加える

(③として「行の定数倍を他の行に加える」を採用することもある)

といった具合です。しかし、今回の記事によると②は不要なのです。もちろん、効率は悪くなったりしますが、基本変形としては①と③だけで十分、と言えるわけです。