Problema
Ver original (inglés)En cada movimiento se retiran dos monedas de un montón y una moneda del otro. Se permite cualquiera de las dos orientaciones. Nunca puedes retirar más monedas de las que quedan en un montón. Determina si es posible que ambos montones terminen en cero.
Implementa coin_piles(left, right).
Entrada
left: El número de monedas en el montón izquierdo.
right: El número de monedas en el montón derecho.
Salida
Devuelve true si ambos montones pueden vaciarse; de lo contrario, devuelve false.
Restricciones
0 ≤ left, right ≤ 1,000,000,000. Dos montones vacíos ya se consideran un resultado exitoso.
Ejemplos
Entrada:
left = 4
right = 2
Salida esperada:
expected = True
Entrada:
long long left = 4;
long long right = 2;
Salida esperada:
bool expected = true;
Entrada:
long left = 4;
long right = 2;
Salida esperada:
bool expected = true;
Explicación
Retira (2, 1) dos veces: (4, 2) → (2, 1) → (0, 0).
Entrada:
left = 4
right = 1
Salida esperada:
expected = False
Entrada:
long long left = 4;
long long right = 1;
Salida esperada:
bool expected = false;
Entrada:
long left = 4;
long right = 1;
Salida esperada:
bool expected = false;
Explicación
El único primer movimiento posible deja (2, 0), tras lo cual no hay forma de vaciar el montón izquierdo.
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.