Türme von Hanoi: Ringe von Peg nach Peg bewegen

9

Ich erweitere meinen früheren Beitrag und schreibe immer noch Towers of Hanoi. Nachdem ich eine wundervolle Lösung erklärt habe, wie man die Ringe auf die Stifte zeichnet, habe ich immer noch eine Frage, an der ich jetzt schon eine Weile herumfummle.

Hier ist meine PegClass:

%Vor%

Und hier ist meine Hauptmethode.

%Vor%

Dies ist die aktuelle Ausgabe:

%Vor%

Meine Frage bleibt, wie bewegt man die '-' Zeichen von Peg zu Peg, wenn nach einer Eingabeaufforderung gefragt wird. Ich habe es stundenlang versucht und es immer noch nicht herausgefunden.

Vielen Dank im Voraus, youmeoutside

    
youmeoutside 08.01.2016, 04:42
quelle

1 Antwort

3

Sie haben die Ringe als nur "wie viele Ringe sind auf diesem Pflock" manifestiert, aber das wird nicht genug sein.

Wenn Sie beispielsweise 8 Ringe haben, werden Sie einen Ring mit der Breite 1, einen mit der Breite 2, einen mit 3 usw. bis zu einem mit 8 darstellen.

In Ihrem Bild haben Sie 3 Ringe mit der Breite 1 (die oberste auf jedem Stift), 2 mit der Breite 2 (der zweite Ring auf den zwei Stiften, die mehrere Ringe haben), und so weiter. Das ist falsch und der Grund dafür, warum Ihr Code dies tut, ist, dass er keine Ahnung davon hat, "wie breit dieser bestimmte Ring sein soll", stattdessen zeichnet er den oberen Ring mit der Breite 1, den darunterliegenden mit der Breite 2 usw.

Stattdessen gibt es hier eine sehr einfache Menge von Objekten, die die Ringe und Stifte darstellen und die Operation, um von einem zum anderen zu gehen:

%Vor%

Um 3 Stifte zu erstellen und 8 Ringe auf den ersten Stift zu stapeln, könntest du diesen Code benutzen:

%Vor%

Um sie zu zeichnen, habe ich mir die Freiheit genommen, ein LINQPad -Programm auszuarbeiten, das sie zur Demonstration zeichnet, aber Sie könnten dies leicht an den Konsolencode anpassen habe jetzt:

%Vor%

Die Ausgabe:

    
Lasse Vågsæther Karlsen 08.01.2016, 09:25
quelle

Tags und Links