Hjem Personlig finansiering Java Programmeringsutfordring: Tilbakekalling av Towers of Hanoi - dummies

Java Programmeringsutfordring: Tilbakekalling av Towers of Hanoi - dummies

Video: Java Tutorial for Beginners [2019] 2025

Video: Java Tutorial for Beginners [2019] 2025
Anonim

Denne utfordringen hjelper deg med å bruke programmeringstalenter til å skrive et Java-program som vil skrive ut trinnene som trengs for å løse et Towers of Hanoi-puslespill, gitt antall disker.

Hanoi Towers er et klassisk logisk puslespill som består av tre vertikale pinner og en rekke disker med ulike diametre. Hver disk har et hull i midten, slik at platene kan glides over pinnene.

Puslespillet starter med alle platene stablet på en av pinnene, med den største disken nederst og den minste på toppen. Formålet med puslespillet er å flytte stakken av disker til en av de andre pinnene, og overholde bare to enkle regler: (1) du kan bare flytte en plate om gangen, og (2) du aldri kan plassere en større disk på toppen av en mindre.

Følgende figur viser løsningen for en stabel med tre disker. Som du kan se, krever løsningen syv trekk:

  1. Flytt disk 1 fra Peg 1 til Peg 3.

  2. Flytt disk 2 fra Peg 1 til Peg 2.

  3. Flytt disk 1 fra Peg 3 til Peg 2.

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

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

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

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

Etter disse syv trinnene, vil stakken av disker være på Peg 3.

Løsningen for tårnene i Hanoi puslespill med tre disker.

Puslespillet blir interessant når du begynner å legge disker til startposisjonen. Med tre disker krever puslespillet bare 7 trekk for å løse. Med fire disker er det nødvendig med 15 trekk. Med fem disker trenger du 31 trekk. Seks disker krever 64 trekk.

Hvis du har fulgt matematikken, øker antallet flyttinger som kreves for å løse puslespillet eksponentielt etter hvert som antall disker øker. Spesielt er antall flyttinger som kreves for å flytte n disker, 2 n - 1. For eksempel vil en stabel på 20 disker kreve 2 20 - 1 trekk; det er mer enn en million trekk!

En interessant legende er knyttet til puslespillet: På et tempel i Hanoi har munker jobbet på et tårn i Hanoi-puslespillet med 64 disker siden jordens oppbyggelse. Når de er ferdige, kommer verden til en slutt. Heldigvis har vi lang tid å vente: Hvis munkene kan flytte en disk per sekund, vil det være ytterligere 580 milliarder år eller så før de fullfører puslespillet.

Din utfordring er enkel: Skriv et Java-program som vil skrive ut trinnene som trengs for å løse et Towers of Hanoi-puslespill, gitt antall disker. Programmet bør først spørre brukeren for antall disker. Da skal det vise trinnene, en per linje.Hvert trinn skal indikere hvilken pinne som skal flyttes en disk fra, og hvilken pinne som skal flyttes til. Trinnene bør også sekvensielt nummereres.

Når programmet er ferdig, bør programmet gjenta, og spør brukeren om antall disker igjen. Programmet bør avsluttes når brukeren kommer inn 0.

Her er et eksempel på konsollutgangen ditt program skal generere:

Hvor mange disker? (0 til slutt) 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 disker ? (0 til slutt) 0

Det eneste andre kravet for å løse denne utfordringen er at løsningen din må bruke rekursiv programmering. Med andre ord, må løsningen inneholde en metode som kaller seg for å løse puslespillet.

Rekursiv programmering kan være utfordrende, så her er noen få tips til løsningen av dette puslespillet:

  • Puslespillet består av tre pinner. En av dem inneholder startstakken av disker; ring denne pinnen til kildepinnen . En av de resterende to pinnene er pinnen du vil flytte stakken av disker til; ring denne pinnen til måletegn . Den tredje pinnen er tilgjengelig for at du kan bruke som mellomliggende pinne til å lagre disker midlertidig når du flytter dem. Ring denne pinnen til reservepenne .

  • Din rekursive metode bør akseptere tre parametere: antall disker som skal flyttes, kildepinne og målpinnen. Bruk tallverdiene 1, 2 og 3 til å representere pinnene.

  • Den grunnleggende ideen om å løse puslespillet rekursivt er dette: For å flytte en stabel med disker fra en kildepinne til et målpinne, krever tre trinn:

    1. Flytt alle platene i stakken, bortsett fra den nederste disken til reservedel.

    2. Flytt den største disken i den originale stakken til målpinnen.

    3. Flytt stakken du flyttet i Trinn 1 fra reservepinnen til målpinnen.

  • Selvfølgelig gir puslespillreglene deg muligheten til å flytte bare en disk om gangen, slik at du ikke kan utføre trinn 1 og 3 i prosedyren som er gitt her, ved å bare plukke opp stakken og flytte den. Det er her rekursjonen kommer inn. For trinn 1 og 3, kaller du metoden rekursivt, hver gang du angir en færre disk som skal flyttes, og hver gang du bruker den forrige målpinnen som reservepinnen.

  • Lurer på hvorfor den rekursive metoden ikke trenger å godta reservepenningen som et argument? Fordi du enkelt kan beregne den, gitt kilde- og målpinnene. Siden det bare er tre pinner, nummerert 1, 2 og 3, er summen av de tre pinnene 6 (1 + 2 + 3). Gitt kilde- og målpinnene kan du beregne reservepinnen ved å trekke kilde- og målpinnen fra 6. Hvis kildepinnen er 1 og målpinnen er 3, må reservepinnen være 2 fordi

    6 - 3 - 1 = 2.

For løsningen, gå til Nedlastinger-kategorien i Java All-in-One for Dummies, 4. utgave produktside.

Lykke til!

Java Programmeringsutfordring: Tilbakekalling av Towers of Hanoi - dummies

Redaktørens valg

Vis resultatene i forhold til et målområde i Excel-oversiktspanelet - dummies

Vis resultatene i forhold til et målområde i Excel-oversiktspanelet - dummies

Noen ganger trenger du målserier i Excel-oversikten og rapportene dine. I enkelte bedrifter er et mål ikke en verdi - det er en rekke verdier. Det vil si at målet er å holde seg innenfor et definert målområde. Tenk deg at du klarer en liten bedrift som selger esker med kjøtt. En del av jobben din er å ...

Slicer Tilpasninger for Slicers på Excel Dashboard - dummies

Slicer Tilpasninger for Slicers på Excel Dashboard - dummies

Hvis du skal bruke slicers på en Excel-dashbordet, bør du gjøre litt formatering for å få dine skiver til å passe til temaet og oppsettet på instrumentpanelet. Følgende diskusjon dekker noen formateringsjusteringer du kan gjøre til dine skiver. Størrelse og plassering av skiver En skiver oppfører seg som en standard Excel ...

Enkel statistikk i Excel Data Analyse - dummies

Enkel statistikk i Excel Data Analyse - dummies

Excel gir flere praktiske, brukervennlige verktøy for å analysere informasjon som du lagrer i et bord, inkludert noen raske og skitne statistiske verktøy. Se på følgende enkle bord. En enkel dagligvareliste. Et av de smaleste og raskeste verktøyene som Excel gir, er muligheten til enkelt å beregne summen, gjennomsnittet, antall, minimum og maksimum av ...

Redaktørens valg

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Filtrene kategorien er trolig den mest interessante og en nyttig kategori som er levert av dialogboksen QuickBooks Modify Report. Filtre-fanen lar deg sette opp filtre som du kan bruke til å angi hvilken informasjon som oppsummeres i rapporten. For å bruke Filtrer-fanen velger du først feltet du vil ha ...

Bruk skjermfeltet til å modifisere QuickBooks 2012-rapporter - dummies

Bruk skjermfeltet til å modifisere QuickBooks 2012-rapporter - dummies

Hvis du klikker Tilpass rapport- QuickBooks viser dialogboksen Endre rapport, som du kan bruke til å tilpasse en rapport. Når du tilpasser en rapport, endrer du rapportens utseende, layout og informasjonen som den oppsummerer. Dialogboksen Endre rapport ser annerledes ut for ulike rapporttyper. Likevel, hvis du ser forbi ...

Slik bruker du QuickBooks for din hvite papir forretningsplan - dummies

Slik bruker du QuickBooks for din hvite papir forretningsplan - dummies

QuickBooks kan hjelpe deg skriv en hvit-papir forretningsplan. Folk skriver ofte en forretningsplan for hvitt papir når de vet at de trenger en strategisk plan, men ikke ønsker å ta de harde beslutningene som er nødvendige for en strategisk plan. Personen i denne konfronten skriver en lang hvit-papir forretningsplan for å camouflere den fraværende strategiske planen. ...

Redaktørens valg

Canon 60D elektronisk nivåfunksjon - dummies

Canon 60D elektronisk nivåfunksjon - dummies

Ikke hvert fotografi må være nivå med horisonten. Imidlertid lider mange typer bilder (landskap, bybilder og arkitektonisk fotografi) sterkt når kameraet er vippet. Den gammeldags løsningen for å utjevne kameraet ditt er å bruke et boble- eller åndnivå (funnet i fotobutikker) for å kontrollere kameraets justering med ...

Kamerainnstillingsdisplayet på et Canon EOS Rebel T3-serie Kamera-dummies

Kamerainnstillingsdisplayet på et Canon EOS Rebel T3-serie Kamera-dummies

På din Canon Rebel T3 eller T3i, kan du se en samling av tilleggsinnstillingsdata via kamerainnstillingsdisplayet. Denne skjermen er bare et informasjonsverktøy, men; Du kan ikke justere noen av de rapporterte innstillingene fra denne skjermen. For å vise skjermbildet Kamerainnstillinger på T3i, vis først innstillingsinnstillingene ...

Canon EOS 70D Kameraoppsett - dummies

Canon EOS 70D Kameraoppsett - dummies

Her er en oversikt over knappene, ringer og andre eksterne kontroller på Canon EOS 70D-kameraet ditt. Objektivet vist i de følgende figurene er Canon EF-S 18-135mm IS (bildestabiliseringsmodell) som selges med kameraet; Andre linser kan variere.