Inhalt: Diese Herausforderung hilft Ihnen dabei, Ihre Programmiertalente zu nutzen, um ein Java-Programm zu schreiben, das die Schritte druckt, die zum Lösen eines Towers of Hanoi-Puzzles erforderlich sind, wenn die Anzahl der Festplatten gegeben ist. Die Türme von Hanoi ist ein klassisches Logikpuzzle, das aus drei vertikalen Stiften und einer Reihe von Scheiben mit verschiedenen Durchmessern besteht. Jede Scheibe hat in der Mitte ein Loch, durch das die Scheiben über die Stifte geschoben werden können. Das Puzzle beginnt mit allen auf einem der Stifte gestapelten Scheiben, wobei die größte Scheibe unten und die kleinste oben liegt. Das Ziel des Puzzles ist es, den Stapel von Datenträgern auf einen der anderen Stifte zu verschieben, wobei nur zwei einfache Regeln zu beachten sind: (1) Sie können jeweils nur einen Datenträger verschieben, und (2) Sie können niemals einen größeren Datenträger darauf legen oben auf einem kleineren. Die folgende Abbildung zeigt die Lösung für einen Stapel von drei Festplatten.
Der Algorithmus, den wir gerade definiert haben, ist ein rekursiver Algorithmus um Türme mit n Scheiben zu verschieben. Wir werden diesen Algorithmus in Python als rekursive Funktion implementieren. Der zweite Schritt ist eine einfache Bewegung einer Scheibe, aber um die Schritte 1 und 3 zu verwirklichen, müssen wir den Algorithmus wieder auf sich selbst anwenden. Die Berechnung endet in einer endlichen Anzahl von Schritten, da die Rekursion jedesmal mit einem um 1 verminderten Argument gegenüber der aufrufenden Funktion gestartet wird. Am Schluss ist noch eine einzelne zu bewegende Scheibe übrig. Rekursives Python-Programm Das folgende in Python geschriebene Skript enthält eine rekursive Funktion namens "hanoi" zur Lösung des Spiels "Türme von Hanoi": def hanoi(n, source, helper, target): if n > 0: # move tower of size n - 1 to helper: hanoi(n - 1, source, target, helper) # move disk from source peg to target peg if source: (()) # move tower of size n-1 from helper to target hanoi(n - 1, helper, source, target) source = [4, 3, 2, 1] target = [] helper = [] hanoi(len(source), source, helper, target) print source, helper, target Anmerkung: AUX heißt in unserem Programm "helper".
Turm von Hanoi mit 3 Scheiben
Also bleibt nur die letzte Scheibe auf dem Stapel SOURCE, die wir auf den Stapel AUX legen. Wir können sie nicht auf TARGET legen, da die dort befindliche Scheibe kleiner ist. Im nächsten Zug können wir die kleine Scheibe von TARGET auf AUX bewegen. Wir haben im Prinzip die Aufgabe gelöst, aber unser Ergebnisturm befindet sich auf dem Stab AUX statt auf TARGET. Zur Erreichung dieses Zustandes haben wir übrigens die maximale Anzahl von Zügen für n= 2 benötigt, also 2 2 - 1 = 3 Wir haben im vorigen Fall gesehen, dass es nicht erfolgreich ist, wenn wir im ersten Schritt die kleinste Scheibe von Stab SOURCE auf den Stab TARGET bewegen. Deswegen legen wir die Scheibe auf den Stab AUX im ersten Schritt. Danach bewegen wir die zweite Scheibe auf TARGET. Dann bewegen wir die kleinste Scheibe von AUX auf TARGET und wir haben unsere Aufgabe gelöst! In den Fällen n=1 und n=2 haben wir gesehen, dass es auf den ersten Zug ankommt, ob wir erfolgreich mit der minimalen Anzahl von Zügen das Rätsel lösen können.
Ich muss auch eine Zähleranzeige implementieren, wie oft es gedauert hat, bis das Spiel läuft, bis das Spiel in meinem beendet ist TowersOfHanoi Klasse. Grundsätzlich brauche ich das Linie ("It took" + counter + "turns to finish. "); Ich weiß nicht, wie ich den Counter korrekt implementieren kann TowersOfHanoi. Das TowersOfHanoi Klasse läuft gut von selbst, aber die Anforderung für die Hausaufgaben ist, dass wir mindestens 2 Klassen min brauchen. Hilfe wäre sehr dankbar!!! Ich bin ein Neuling in Java und programmiere generell bitte nicht zu weit fortgeschritten Antworten: 1 für die Antwort № 1 In der TowersOfHanoi-Klasse benötigen Sie keine Hauptfunktion. Ersetzen Sie stattdessen Ihre TowersRunner-Hauptmethode (String args []) durch (num_of_discs, "A", "B", "C");} 0 für die Antwort № 2 Sie können den Zähler einfach in der Funktion übergeben und inkrementieren lassen. Zum Beispiel: public static void solve(int first_disc, char aTower, char bTower, char cTower, int counter) { ("Currently on turn #" + counter); solve(first_disc - 1, aTower, cTower, bTower, counter + 1); solve(first_disc - 1, bTower, aTower, cTower, counter + 1);}} Beim ersten Anruf von solve, würden Sie in 1 gehen solve rekursiv aufgerufen wird, wird der Zähler inkrementiert.
Wie kann ich Übersetzungen in den Vokabeltrainer übernehmen? Sammle die Vokabeln, die du später lernen möchtest, während du im Wörterbuch nachschlägst. Mehrzahl von charakter syndrome. Die gesammelten Vokabeln werden unter "Vokabelliste" angezeigt. Wenn du die Vokabeln in den Vokabeltrainer übernehmen möchtest, klicke in der Vokabelliste einfach auf "Vokabeln übertragen". Bitte beachte, dass die Vokabeln in der Vokabelliste nur in diesem Browser zur Verfügung stehen. Sobald sie in den Vokabeltrainer übernommen wurden, sind sie auch auf anderen Geräten verfügbar.
Um Sonderzeichen darzustellen, können sogenannte Escape-Sequenzen verwendet werden. Sehr häufig dient dabei der umgekehrte Schrägstrich als Escape-Zeichen, so wird beispielsweise ein horizontales Tabulatorzeichen als '\t' dargestellt. Operationen [ Bearbeiten | Quelltext bearbeiten] Zeichen sind abhängig von der gewählten Kodierung geordnet. Daher bieten die meisten Programmiersprachen entsprechende Vergleichsoperatoren wie ist gleich (z. B. "=", "==" oder "IS EQUAL"), ist ungleich (z. B. "! =", "<>", "IS NOT EQUAL"), ist kleiner als (z. B. "<" oder "IS LESS THAN"), ist größer als (z. B. Wie heißt der Plural von Charakter? (Sprache, Grammatik, mehrzahl). ">" oder "IS GREATER THAN"). Ebenso gibt es üblicherweise Operatoren zum Erhöhen (z. B. "++", "SUCC") und Vermindern (z. B. " --" oder "PRED"), also ermitteln des Nachfolgers oder Vorgängers eines Zeichens. Da jedes Zeichen, abhängig von seiner Kodierung durch einen bestimmten Wert repräsentiert wird, bieten viele Programmiersprachen auch die Möglichkeit, Zeichen in Zahlen umzuwandeln und umgekehrt. Dies kann entweder impliziert passieren, z.
Denn das Wort Charakter ist maskulin und braucht im Nominativ Singular deswegen den Artikel der. Welches Genus ist das richtige? Die meisten Deutschlerner machen sehr lange Fehler bei der, die und das – oft noch, wenn sie schon viele Jahre in Deutschland leben. Und auch die Deutschen selbst streiten bei einigen Wörtern, ob der, die oder das der richtige Artikel ist. Warum? Ganz einfach: weil das Genus im Deutschen sehr unlogisch ist. Bei den meisten Wörtern muss man einfach lernen, ob es maskulin, feminin oder neutral ist. Auch wenn es nicht viele Regeln gibt, hilft es diese zu kennen. Dann musst du schon ein bisschen weniger auswendig lernen. Hier sind ein paar Regeln, die helfen können, das Genus zu finden. Der, die oder das Charakter? Welcher Artikel?. Aber Vorsicht: Sie haben leider fast alle auch Ausnahmen. Maskulin sind normalerweise Wörter... für Tageszeiten, Wochentage, Monate und Jahreszeiten für Himmelsrichtungen und Wetterphänomene für Automarken für alkoholische Getränke mit -ig, -en, -ich oder -ling am Ende Feminin sind normalerweise Wörter... für Obstsorten mit -in, -keit, -ung -heit, -schaft oder -ei am Ende Neutral sind normalerweise Wörter... für Farben mit -ment, -tum oder -chen am Ende Der unbestimmte Artikel Den bestimmten Artikel – also der, die, das – benutzt du immer dann, wenn klar ist, über wen oder was du sprichst.
Mehr Informationen zur Deklination und vielen weiteren Themen der deutschen Grammatik findest du in der App der DEUTSCH PERFEKT TRAINER.
Als Dankeschön kannst du bei erreichter Punktzahl diese Webseite ohne Werbung nutzen.