Scambiare due variabili senza una variabile d’appoggio

Published:

This (possibly cringeworthy) article is very old and part of Project Necromancy. Many of the opinions I held back then have changed. I'm keeping this only for "historical" interest, not necessarily because I agree with what I thought back then.

Also consider that many of the included links (even the ones to the Internet Archive) are dead.

Ieri un mio collega mi ha sfidato a scambiare i valori di due variabili senza usare una variabile d’appoggio o una qualsiasi altra struttura dati.

Non mi ero mai posto il problema, ma ho accettato la sfida. Non avevo una connessione, quindi non potevo barare. Dunque ho cominciato a ragionare e ho scritto questo

x = x ^ y
y = x ^ y
x = x ^ y

Dove ^ indica l’operatore di OR esclusivo (noto a tutti come XOR)

E funziona!

Poi, stamattina, armato di connessione internet, ho provato a vedere se la soluzione era già stata pubblicata da qualcun’altro. Ovviamente sì 🙂

Siccome non ha senso reinventare la ruota, rimando per la spiegazione a questa pagina.

Permalink