Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen

Diskutiere Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen im Java Basics - Anfänger-Themen Forum; Hallo, Ich habe ein Problem, welches ich nicht lösen kann. Ich muss ein Programm für Hanoi Türme in Java schreiben. Dieses Programm solle von...

  1. Bobi
    Bobi Mitglied
    Hallo,

    Ich habe ein Problem, welches ich nicht lösen kann.
    Ich muss ein Programm für Hanoi Türme in Java schreiben.
    Dieses Programm solle von beliebige aber valide start die Scheiben an das Ziel Stab
    stecken.
    valid meine ich damit, dass man kleine scheibe oberhalb der größere scheiben liegen muss.

    Also z.B es könnte solche Ausgangsposition geben StabA hat 6,5,4 StabB 7,3 StabC 2,1
    Das Programm muss das Problem rekursiv lösen.

    Für jeden kleine Tipp bin ich dankbar.
     
  2. Vielleicht hilft dir dieses Training hier weiter.
  3. mihe7
    mihe7 Bekanntes Mitglied
    Forensuche. Ich sehe z. B. am Ende der Seite, wenn ich Deinen Beitrag geöffnet habe, alleine fünf Threads zum Thema.
     
  4. Bobi
    Bobi Mitglied
    Bevor ich das Thema erstellt habe, habe ich es schon gegoogelt. Ich habe auch hier auch alles gelesen, aber es hilft mir nicht weiter.
     
  5. mihe7
    mihe7 Bekanntes Mitglied
  6. DrZoidberg
    DrZoidberg Aktives Mitglied
    Ich habs mal versucht. Es scheint zu funktionieren.
    Code (Java):
    import java.util.ArrayList;
    import java.util.List;

    public class Hanoi {
      static int removeLast(List<Integer> list) {
        int last = list.get(list.size() - 1);
        list.remove(list.size() - 1);
        return last;
      }
     
      static void moveOne(List<Integer> list1, List<Integer> list2) {
        list2.add(removeLast(list1));
      }
     
      static void print(List<List<Integer>> poles) {
        int height = 0;
        for(var pole: poles) {
          if(pole.size() > height) height = pole.size();
        }
        for(int h = height - 1; h >= 0; h--) {
          for(var pole: poles) {
            if(pole.size() > h) {
              System.out.print(pole.get(h));
            } else {
              System.out.print(" ");
            }
            System.out.print(" ");
          }
          System.out.println();
        }
        System.out.println();
      }
     
      static void move(List<List<Integer>> poles, int maxDiskSize, int destPole) {
        if(maxDiskSize < 1) return;
        int fromPole = 0;
        loop:
        for(; fromPole < poles.size(); fromPole++) {
          for(int diskNr = 0; diskNr < poles.get(fromPole).size(); diskNr++) {
            if(poles.get(fromPole).get(diskNr) == maxDiskSize) break loop;
          }
        }
        if(fromPole == destPole) {
          move(poles, maxDiskSize - 1, destPole);
        } else {
          int mid = 0;
          while(mid == destPole || mid == fromPole) mid++;
          move(poles, maxDiskSize - 1, mid);
          moveOne(poles.get(fromPole), poles.get(destPole));
          print(poles);
          move(poles, maxDiskSize - 1, destPole);
        }
      }
     
      public static void main(String[] args) {
        List<List<Integer>> poles = new ArrayList<>();
        poles.add(new ArrayList<>(List.of(6,5,4)));
        poles.add(new ArrayList<>(List.of(7,3)));
        poles.add(new ArrayList<>(List.of(2,1)));
        print(poles);
       
        move(poles, 7, 2);
      }
    }
     
    Bobi gefällt das.
  7. Bobi
    Bobi Mitglied
    Danke an alle, welche hier gepostet haben und besonders an DrZoidberg.
    Ich werde es morgen genauer testen.
     
  8. Wenn du Java lernen möchtest, empfehlen wir dir diese Online-Training hier
Die Seite wird geladen...

Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen - Ähnliche Themen

Türme von Hanoi - Anzahl Züge
Türme von Hanoi - Anzahl Züge im Forum Spiele- und Multimedia-Programmierung
Rekursion Rückgabe - Türme von Hanoi
Rekursion Rückgabe - Türme von Hanoi im Forum Java Basics - Anfänger-Themen
Türme von Hanoi - Rekursiv.
Türme von Hanoi - Rekursiv. im Forum Java Basics - Anfänger-Themen
Türme von Hanoi - Anzhal der Züge
Türme von Hanoi - Anzhal der Züge im Forum Java Basics - Anfänger-Themen
Türme von Hanoi in "Java ist auch eine Insel"
Türme von Hanoi in "Java ist auch eine Insel" im Forum Java Basics - Anfänger-Themen
Thema: Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen