Problem
Bei jedem Zug werden zwei Münzen von einem Stapel und eine Münze vom anderen entfernt. Beide Richtungen sind erlaubt. Es dürfen niemals mehr Münzen entfernt werden, als im jeweiligen Stapel vorhanden sind. Bestimme, ob beide Stapel auf null enden können.
Implementiere coin_piles(left, right).
Eingabe
left: Die Anzahl der Münzen im linken Stapel.
right: Die Anzahl der Münzen im rechten Stapel.
Ausgabe
Gib true zurück, wenn beide Stapel geleert werden können; andernfalls gib false zurück.
Einschränkungen
0 ≤ left, right ≤ 1.000.000.000. Zwei leere Stapel gelten bereits als erfolgreiches Ergebnis.
Beispiele
Eingabe:
left = 4
right = 2
Erwartete Ausgabe:
expected = True
Eingabe:
long long left = 4;
long long right = 2;
Erwartete Ausgabe:
bool expected = true;
Eingabe:
long left = 4;
long right = 2;
Erwartete Ausgabe:
bool expected = true;
Erläuterung
Entferne zweimal (2, 1): (4, 2) → (2, 1) → (0, 0).
Eingabe:
left = 4
right = 1
Erwartete Ausgabe:
expected = False
Eingabe:
long long left = 4;
long long right = 1;
Erwartete Ausgabe:
bool expected = false;
Eingabe:
long left = 4;
long right = 1;
Erwartete Ausgabe:
bool expected = false;
Erläuterung
Der einzige mögliche erste Zug ergibt (2, 0), danach kann der linke Stapel nicht mehr geleert werden.
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Jeder Zug entfernt insgesamt genau drei Münzen, also muss die gesamte Münzanzahl dazu passen.
Hinweis 2
Kein Stapel darf unter null fallen, also kann ein Stapel nicht größer sein, als der andere tragen kann.
Hinweis 3
Prüfe sowohl die Gesamtsumme als auch die Differenz der Stapel.
Erwartete Komplexität
Zeit O(1), zusätzlicher Speicher O(1)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.