El siguiente es un algoritmo para el ingenio, que es a menudo solicitado en entrevistas técnicas de muchas compañías.
El enunciado es bastante simple, pero que no te engañe, a más de uno ha causado dolores de cabeza y no han podido resolverlo 🧑💻
Enunciado
Dadas dos variables que representan a un número entero cada una, intercambiar sus valores sin utilizar una variable temporal.
Algoritmo
Primero te mostraré como lo haríamos si es que no tuviesemos la restricción de no utilizar una variable temporal, haríamos algo como esto:
public void Swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
Console.WriteLine($"{x},{y}");
}
Sin embargo, ya que no podemos utilizar una tercera variable para usarla como variable temporal, entonces utilizaremos la operacion aritmética de la suma. Veamos el código para entender esto mejor.
Código
public void Swap(int x, int y)
{
x = x + y;
y = x - y;
x = x - y;
Console.WriteLine($"{x},{y}");
}
Ahora pruéba este algoritmo en Visual studio o en algún compilador de C# online como https://dotnetfiddle.net/ y apréndelo bien 😉
Recuerda que esta entrada es de la serie de artículos Algoritmos notables, los cuales los subo a este repo, puedes visitarlo y descubrir más algoritmos 😉
Si te ha gustado esta entrada entonces compártela con tu equipo de ingeniería 😉👌