Św. Mikołaj nie potrzebuje trzeciej (zmiennej)

Święta za pasem, już wkrótce usiądziesz ze swoją rodziną przy wigilijnym stole. Po kolacji nadejdzie długo wyczekiwany czas wypatrywania pierwszej gwiazdki, której pojawienie się oznaczać będzie, że już za chwilę zawita św. Mikołaj! A św. Mikołaj to prezenty, ale też… kłopotliwe pytania.

Taki przystojny kawaler-programista! Tylko te gry i komputery… Czy byłeś grzeczny w tym roku?

Chwila zastanowienia…

To nie wchodziło w scope tego sprintu, ale jest w backlogu. W zamian mogę św. Mikołajowi pokazać, jak zamienić dwie liczby wartościami, bez użycia trzeciej, pomocniczej! Czy św. Mikołaj reflektuje?

No i tutaj już wiadomo, co będzie. Każdy by chciał wiedzieć!

Ja znam trzy sposoby, ale może jest ich więcej (jeśli znasz inny, to koniecznie podziel się nim w komentarzu!):

  1. x = (y = (x = x ^ y) ^ y) ^ x;
  2. x = - (y = (x = x + y) - y) + x;
  3. x = (int)(1.0 / (y = (x = x * y) / y) * x);

Każdy z tych sposobów ma swoje słabe strony i ograniczenia (pozostawiam jako ćwiczenie na nudę w oczekiwaniu na pierwszą gwiazdkę). Jednak pewna wada jest wspólna dla nich wszystkich – gdy użyjesz takiej konstrukcji w projekcie, koledzy najpierw mocno się zamyślą, a potem nie pozwolą Ci dożyć kolejnych Świąt!

Wszystkiego najlepszego!

 

About the author

Programista lubiący ten fach. Połączenie perfekcjonisty i skauta z odrobiną eksperymentatora. Pracował dla dużych i małych, polskich i zagranicznych, prywatnych i publicznych podmiotów. Miał również przyjemność opiekować się praktykantami w jednej z poprzednich firm, jak również prowadzić ćwiczenia na Politechnice Warszawskiej, której jest dumnym absolwentem.

Leave a Reply

Your email address will not be published. Required fields are marked *