Hjem Personlig finansiering Java Programmeringsudfordring: Genopretning af tårnene i Hanoi - dummies

Java Programmeringsudfordring: Genopretning af tårnene i Hanoi - dummies

Video: Java Tutorial for Beginners [2019] 2025

Video: Java Tutorial for Beginners [2019] 2025
Anonim

Denne udfordring hjælper dig med at bruge dine programmeringstalenter til at skrive et Java-program, der vil udskrive de trin, der er nødvendige for at løse et tårn i Hanoi-puslespil i betragtning af antallet af diske.

Hanoi Towers er et klassisk logisk puslespil, der består af tre lodrette pinde og et antal diske med forskellige diametre. Hver disk har et hul i midten, så diskene kan glides over pinnene.

Puslespillet starter med alle de diske stablet på en af ​​pinnene, med den største disk i bunden og den mindste øverst. Formålet med puslespillet er at flytte stakken af ​​diske til en af ​​de andre stifter, og overholde kun to enkle regler: (1) du kan kun flytte en disk ad gangen, og (2) du aldrig kan placere en større disk på toppen af ​​en mindre.

Nedenstående figur viser løsningen for en stak på tre diske. Som du kan se, kræver løsningen syv bevægelser:

  1. Flyt disk 1 fra Peg 1 til Peg 3.

  2. Flyt disk 2 fra Peg 1 til Peg 2.

  3. Flyt Disk 1 fra Peg 3 til Peg 2.

  4. Flyt disk 3 fra Peg 1 til Peg 3.

  5. Flyt disk 1 fra Peg 2 til Peg 1.

  6. Flyt disk 2 fra Peg 2 til Peg 3.

  7. Flyt disk 1 fra Peg 1 til Peg 3.

Efter disse syv trin vil stakken af ​​diske være på Peg 3.

Løsningen til tårnene i Hanoi puslespil med tre diske.

Puslespillet bliver interessant, når du begynder at tilføje diske til startpositionen. Med tre diske kræver puslespillet kun 7 træk til at løse. Med fire diske kræves der 15 træk. Med fem diske skal du bruge 31 bevægelser. Seks diske kræver 64 træk.

Hvis du har fulgt matematikken, øges antallet af bevægelser, der kræves for at løse puslespillet eksponentielt, da antallet af diske stiger. Specifikt er antallet af træk, der kræves for at flytte n diske, 2 n - 1. For eksempel kræver en stak på 20 diske 2 20 - 1 træk; det er mere end en million flytter!

En interessant legende er forbundet med puslespillet: På et tempel i Hanoi har munkene arbejdet på et tårn i Hanoi-puslespil med 64 diske siden jordens skabelse. Når de er færdige, vil verden komme til en ende. Heldigvis har vi lang tid at vente: Hvis munkene kan flytte en disk per sekund, vil det være endnu 580 milliarder år eller deromkring, før de afslutter puslespillet.

Din udfordring er enkel: Skriv et Java-program, der udskriver de nødvendige skridt til at løse et tårn i Hanoi-puslespil i betragtning af antallet af diske. Programmet skal først spørge brugeren for antallet af diske. Så skal det vise trinene, en pr. Linje.Hvert trin skal angive, hvilken pinde der skal flyttes en disk fra, og hvilken peg for at flytte disken til. Trinnene skal også sekventielt nummereres.

Når programmet er færdigt, skal programmet gentage og spørge brugeren om antallet af diske igen. Programmet skal slutte, når brugeren indtaster 0.

Her er en prøve af det konsolprodukt, dit program skal generere:

Hvor mange diske? (0 til slut) 3 1: 1 til 3 2: 1 til 2 3: 3 til 2 4: 1 til 3 5: 2 til 1 6: 2 til 3 7: 1 til 3 Hvor mange diske ? (0 til slut) 0

Det eneste andet krav til løsning af denne udfordring er, at din løsning skal bruge rekursiv programmering. Med andre ord skal din løsning indeholde en metode, der kalder sig til at løse puslespillet.

Rekursiv programmering kan være udfordrende, så her er et par tip til løsningen af ​​dette puslespil:

  • Puslespillet består af tre pinde. En af dem indeholder startstakken af ​​diske; kalder denne peg på kildepen . En af de resterende to pegs er den pinde, du vil flytte stakken af ​​diske til; kalder denne peg på target peg . Den tredje peg er tilgængelig for dig som midlertidig peg til at gemme diske midlertidigt, mens du flytter dem. Kald denne peg på reservedele .

  • Din rekursive metode skal acceptere tre parametre: antallet af diske, der skal flyttes, kildepen og målestiften. Brug heltalværdierne 1, 2 og 3 til at repræsentere stifterne.

  • Grundlæggende ideen om at løse puslespillet rekursivt er dette: For at flytte en stak disketter fra en kildepind til en målstift skal der træffes tre trin:

    1. Flyt alle diske i stakken undtagen bunddisken til reservepeg.

    2. Flyt den største disk i den oprindelige stak til målestiften.

    3. Flyt stakken du flyttede i trin 1 fra reservepenet til målestiften.

  • Selvfølgelig giver puslespilreglerne dig mulighed for kun at flytte en disk ad gangen, så du ikke kan udføre trin 1 og 3 i den procedure, der gives her, ved blot at hente stakken og flytte den. Det er her rekursionen kommer ind. For trin 1 og 3 kalder du metoden rekursivt, hver gang du angiver en færre disk, der skal flyttes, og hver gang du bruger den foregående målsnål som reservepenet.

  • Spekulerer på, hvorfor den rekursive metode ikke behøver at acceptere reservepenet som et argument? Fordi du nemt kan beregne det, givet kilde og mål pegs. Da der kun er tre stifter, nummereret 1, 2 og 3, er summen af ​​de tre stifter 6 (1 + 2 + 3). I betragtning af kilde- og målestifterne kan du beregne reservepenet ved at trække kilde- og målstiftet fra 6. Hvis kildepenet er 1 og målestangen er 3, skal reservepenet være 2, fordi

    6 - 3 - 1 = 2.

For løsningen, gå til fanen Downloads i Java All-in-One for Dummies, 4. udgave produktside.

Held og lykke!

Java Programmeringsudfordring: Genopretning af tårnene i Hanoi - dummies

Valg af editor

Hvordan man skriver en check for en fremragende bill i QuickBooks Online - dummies

Hvordan man skriver en check for en fremragende bill i QuickBooks Online - dummies

Du kan Brug QuickBooks Online (QBO) Check vinduet til at skrive en check for at betale et faktura, du tidligere indtastede - noget, du ikke kan gøre i QuickBooks desktop produkt. Brug ikke Check-transaktionen, hvis du planlægger at betale flere regninger. Hvis du vælger en betalingsmodtager, for hvem der foreligger en udestående faktura, QBO ...

Sådan afskrives fakturaer med QuickBooks Online Accountant - dummies

Sådan afskrives fakturaer med QuickBooks Online Accountant - dummies

Vælger skrivefakturaer fra revisionsværktøjerne menuen i QBOA viser siden Skriv ud fakturaer, som giver dig mulighed for at se fakturaer, du måske vil afskrive, og derefter skrive dem til en konto efter eget valg. Øverst på siden indstiller du filtre for at få vist de fakturaer, du vil have ...

Importrevisorens ændringer til QuickBooks 2012 Datafil - dummies

Importrevisorens ændringer til QuickBooks 2012 Datafil - dummies

Din klient importerer de ændringer, som du ' har lavet i revisorens kopi af QuickBooks 2012-datafilen i hendes arbejdskopi af datafilen. For at gøre dette vælger klienten filen Arkiv → Revisorens Kopi → Klientaktiviteter → Kommandoen Import Revisorens Ændringer. QuickBooks viser dialogboksen Importer regnskabsførerens ændringer. For at bruge importkontoens ændringer ...

Valg af editor

Brug Flash med Nature Photography - dummies

Brug Flash med Nature Photography - dummies

Som regel afhænger du af naturlig belysning til naturfotografering. Du kan dog bruge flash-flash eller en ekstra flash-enhed til at øge naturlig belysning. On-flash-kamera De fleste digitale kameraer leveres med en flash på kameraet. Blitzenheden springer op, når det er nødvendigt. Du kan også aktivere flash på kameraet, når du skal tilføje en ...

Brug tredjeparts rå software til HDR fotografi - dummies

Brug tredjeparts rå software til HDR fotografi - dummies

Du kan købe eller downloade et væld af Råredigerere og konvertere fra tredjepart, der hjælper dig med at lave billeder med høj dynamisk rækkevidde. Hvis du er utilfreds med din nuværende software og vil prøve noget nyt, skal du hænde på en eller flere af de programmer, der er angivet i tabellen. Rå redaktører fra tredjepart Navn URL Platform (er) Freeware? ...

Brug dekorative accenter i mad stil og madfotografi - dummies

Brug dekorative accenter i mad stil og madfotografi - dummies

Når fødevaren alene ikke skaber Det drama eller den intrigue, du vil have i din fotografering med dekorative accenter - af farve, form eller tekstur - kan give dine billeder den ekstra effekt, du leder efter. Accenter er forbedringer af fødevarematerialet, og selvom de tjener formålet med at ophæve maden, er de ...

Valg af editor

Sådan finder du formatering i Word 2007 - dummies

Sådan finder du formatering i Word 2007 - dummies

Du kan bruge kommandoen Find til at skure dit Word 2007-dokument til formatering af oplysninger. Hvis du f.eks. Kun vil finde de forekomster af ordet, der ligger i fed skrift, kan du gøre det. Dette eksempel søger efter teksten gåseæg med en skriftstørrelse på 24 point i en ...

Hvordan man finder tekst i Word 2016 - dummies

Hvordan man finder tekst i Word 2016 - dummies

Ikke gider med båndet! For at finde tekst i dit Word 2016-dokument, tryk Ctrl + F, den mindeværdige tastaturgenvej til kommandoen Find. Du ser navigationsruden, svarende til hvad der vises her. Navigationsruden. Skriv den tekst, du vil lokalisere, i feltet Søg dokument. Når du skriver forekomster af teksten ...

Hvordan man finder stilarter i Word 2016 - dummies

Hvordan man finder stilarter i Word 2016 - dummies

Stilarter bor på Word 2016 Home-fanen navngivet Styles-gruppe, som vist her. Hvad du ser på båndet er Style Gallery, som kan udvides til en fuld menu med stilvalg. Hvor Word-stilarter lurer. Klik på dialogboksen launcher i det nederste højre hjørne af Styles-gruppen ...