Guten Morgen,
hat jemand eine Idee wie man dieses Spiel am besten Lösen könnte?
Neben den Türmen von Hanoi stellen die Chinesischen Ringe (https://de.wikipedia.org/ wiki/Chinesische_Ringe) ein bekanntes Geduldsspiel dar, bei welchem sich mehrere Ringe auf einem Stab befinden und miteinander verbunden sind. Ziel des Spiels ist es, alle Ringe vom Stab zu entfernen. Dabei sind folgende Regeln zu beachten:
1 1. Der erste Ring darf immer vom Stab entfernt oder dem Stab hinzugefügt werden.
2. Wenn die ersten (n − 1) Ringe vom Stab entfernt wurden und der n-te Ring auf dem Stab bleibt, darf der (n + 1)-te Ring vom Stab entfernt oder dem Stab hinzugefügt werden.
3. In jedem Zug daruf nur ein Ring bewegt werden. In dieser Aufgabe sollen Sie einen rekursiven Algorithmus entwickeln, der alle Ringe vom gegebenen Stab entfernt. Zur Repräsentation eines Stabes mit 8 Ringen wird der Datentyp byte verwendet. Das Bit an Position i beschreibt den Status des i-ten Rings (0: Ring ist auf dem Stab, 1: Ring ist nicht auf dem Stab).
Implementieren Sie nun die folgenden Methoden:
a) boolean isOnStick(byte stick, int pos), die true zurück liefert, falls sich der Ring pos auf dem Stab (stick) befindet und false andernfalls.
b) boolean canMove(byte stick, int pos), die true zurück liefert, falls der Ring an Position pos bewegt werden kann und false andernfalls.
c) byte move(byte stick, int pos, boolean on), die den Ring an Position pos auffädelt (on=true) oder abnimmt (on=false). Prüfen Sie zudem, ob das Abnehmen/Auffädeln zulässig ist mithilfe der Methode aus Aufgabenteil b). Der Rückgabewert der Methode ist der modifizierte Stab.
hat jemand eine Idee wie man dieses Spiel am besten Lösen könnte?
Neben den Türmen von Hanoi stellen die Chinesischen Ringe (https://de.wikipedia.org/ wiki/Chinesische_Ringe) ein bekanntes Geduldsspiel dar, bei welchem sich mehrere Ringe auf einem Stab befinden und miteinander verbunden sind. Ziel des Spiels ist es, alle Ringe vom Stab zu entfernen. Dabei sind folgende Regeln zu beachten:
1 1. Der erste Ring darf immer vom Stab entfernt oder dem Stab hinzugefügt werden.
2. Wenn die ersten (n − 1) Ringe vom Stab entfernt wurden und der n-te Ring auf dem Stab bleibt, darf der (n + 1)-te Ring vom Stab entfernt oder dem Stab hinzugefügt werden.
3. In jedem Zug daruf nur ein Ring bewegt werden. In dieser Aufgabe sollen Sie einen rekursiven Algorithmus entwickeln, der alle Ringe vom gegebenen Stab entfernt. Zur Repräsentation eines Stabes mit 8 Ringen wird der Datentyp byte verwendet. Das Bit an Position i beschreibt den Status des i-ten Rings (0: Ring ist auf dem Stab, 1: Ring ist nicht auf dem Stab).
Implementieren Sie nun die folgenden Methoden:
a) boolean isOnStick(byte stick, int pos), die true zurück liefert, falls sich der Ring pos auf dem Stab (stick) befindet und false andernfalls.
b) boolean canMove(byte stick, int pos), die true zurück liefert, falls der Ring an Position pos bewegt werden kann und false andernfalls.
c) byte move(byte stick, int pos, boolean on), die den Ring an Position pos auffädelt (on=true) oder abnimmt (on=false). Prüfen Sie zudem, ob das Abnehmen/Auffädeln zulässig ist mithilfe der Methode aus Aufgabenteil b). Der Rückgabewert der Methode ist der modifizierte Stab.