Skriva kod för att lösa pussel torn av Hanoi



F: Vad är det enklaste sättet att få summan av alla heltal mellan 1 och 100?

Svar: först får summan av alla heltal mellan 1 och 99, sedan lägga till 100.

Dumt, rätt? Detta är faktiskt ett exempel på en kraftfull söndra och erövra teknik i programmering kallas "rekursion." Rekursion behandlar en uträkning uppgift som en uppsättning av mindre, liknande uträkningar, med nästa mindre uträkningen beräknas, och sedan nästa, och nästa, tills du kommer till en "base case" med kända svar. För nästa steg i exemplet ovan, för att få summan av heltal mellan 1 och 99, du helt enkelt summera tal mellan 1 och 98, Lägg sedan 99. Om du hålla kommer ner i kedjan, kommer du till basen fallet att summera heltal mellan 1 och 1, som vi vet är 1.

En kul användning av rekursion är att skriva ett program som kan ge dig lösningen till Tower of Hanoi pusslet. Det pusslet visas i bilden på denna sida. Målet är att flytta alla diskar från det första inlägget till det tredje inlägget. Pusslet är:

  • Du kan bara flytta en disk i taget från en post till en annan, vilket innebär att vid varje given tidpunkt, på mest en disk kan vara avstängd ett inlägg.
  • Du kan flytta diskar till det andra inlägget som vilar område.
  • Diskar kan inte flyttas ovanpå en mindre disk.

Hur kan detta pussel delas upp i mindre delar? Som bilderna visar, kan denna 7-disk version av Tower of Hanoi pussel lösas som:

  1. Lösa den 6-disk versionen av pussel från posten A-post B.
  2. Flytta disk 7 från posten A-post C.
  3. Lösa den 6-disk versionen av pusslet igen, denna gång från post B bokföra C.

För detta instructable, jag använder JavaScript som programmeringsspråk så du kan köra det i en vanlig webbläsare. Det hjälper för att vara förtrogen med några grundläggande Programmeringsteknik begrepp, men även om du inte, förhoppningsvis detta instructable kommer att bli intressant.

Om du gillar detta instructable, snälla rösta på mig i kodad skapelser tävlingen före 18 maj 2015. Tack.

Låt oss börja kodning!

Se Steg
Relaterade Ämnen

Billigt sätt att spara ett pussel

jag tycker om att sätta ihop pussel och hänga dem upp för prydnadsändamål. Har du några alternativ när det gäller att visa en färdiga pussel. Det billigaste sättet är att bara klistra in den i en ram som håller det tätt, men inte limmade ihop. Med de...

Göra ett torn av Hanoi pussel spel

I detta korta projekt, kommer jag visa hur man bygger ett torn av Hanoi pusselspel använda trä som jag förvärvat från pallar. Spelet är enkelt att spela, och det gör en bra soffbord bit. För alla obekanta med spelet, här är korta instruktioner:-Målet...

UCube: Design & Skriv 3D objekt genom att bläddra växlar

detta instructable går igenom hur du designa och skriva ut en mängd 3D-modeller med ett system som kallas "UCube".Obs: Jag skulle älska att så småningom offentliggöra detaljerade instruktioner om hur du gör din egen UCube, men eftersom designen...

Använda QR-koder för att identifiera och spåra dina saker

vem flyttas hus vet vad en otäck sak som skulle kunna vara. Jag för närvarande outprocessing, vilket innebär massor av lådor och packning och andra typer av elände. En av mina problem är denna: Hur vet du om ett visst objekt är? Du har inte packat up...

Kod för att beställa filnamn ska passa

I detta Instructable lär du dig att snabbt beställa filer till en önskad sekvens. Vi kommer att göra detta genom utfyllnad numrerade filnamn med bokstäver så de sortera naturligt sortera i stegvis ordning. Stoppning / noll stoppning är en metod för a...

Hur du skriver skript för att göra en boll drag

jag använder programmet från Khan Academyhär är en länk till denhttp://www.khanacademy.org/CS/NewSteg 1: Steg 1 För att göra bakgrunden färg helt enkelt skriva background(0,0,0)den färg klickar du på en av nollor och du kan klicka på vilken färg du v...

Hur du använder Genome kod för att utforma

Specifika sekvenser av A, T, G, C nukleotider definiera många virus och alla levande organismer inklusive dig (se wikipedia om genen,genomet och DNA).Här är hur man får dem för din design. Exempelvis är detta en akryl laserskuret data för min Shoji a...

Bygga en öl Kegerator Tower kylare för att svalka din Kegerator torn kran och förhindra skummande öl

Det nummer ett klagomålet om någon direkt Rita kegerator är att öl kran & shanken få varm och din första 1/2 glas öl är alltid löddrig. Men lösningen är lätt - bara bygga och installera en öl tower kylare. Denna tower kylare fungerar genom att ständi...

Kodgenerator för anpassade Android/Arduino menyer att slå Arduino utgångar på och av. Android/Arduino för nybörjare. Absolut ingen programmering krävs

Uppdatering: användare frågade för undermeny support. pfodApp alltid stött sub-menyerna men jag har lagt undermenyer till pfodDesigner. Den instructable Design A Custom menysystemet visar hur du använder pfodDesigner för att bygga en meny med underme...

Bygga en rörlig och spårning Portal torn

Det är gulligt, det är artigt och det är verkligen dödliga. Det är ett torn från portalen. Det rör sig, har ljus, har ljud, och något att min tidigare Portal projektet inte hade: kameraspårningsinformation.Tornet är kontrollerat med en Arduino och en...

Ställa in en A100LK vindmätaren på en Arduino

Någon tänker installera en vindkraftgenerator, eller ens en hel flock av vindkraftverk, skulle göra klokt att övervaka den föreslagna platsen för minst ett helt år innan spendera ett öre mer på hårdvara. Detta är vad A100LK är utformad för.Det första...

AVR Assembler handledning 11

Välkommen till handledning 11!I den här korta guiden kommer vi slutligen att bygga den första delen av vårt sista projekt.Det första du bör göra är att gå till det allra sista steget i denna tutorial och titta på videon. Sedan komma tillbaka hit. [pa...

Hur man gör en artificiell intelligens

Börja med en dator som har tal- och även en text till tal-konverterare.Du kommer att behöva kunna skriva datorprogram som kan komma åt den taligenkänning och text till tal-omvandlaren.Några tillämpning utvecklingsverktyg och programmeringsspråk kan e...

Arduino: Enkla sekventiella LED

I detta instructable, vi kommer att bygga banan och skriva kod för att kontrollera tillståndet i tre LED sekventiellt med Arduino Uno styrelsen.Delar som behövs:Arduino UnoArduino programvara (kan hämtas gratis från Arduino)SkärbrädaTre lysdioder (va...

LED examen Hat

För alla dessa akademiker eller nästan akademiker som har antingen haft eller kommer att ha examen snart, Grattis!Min rumskompis just examen från Washington State University College av kläder Merchandising Design och textilier, med en examen i mode v...

Arduino interaktiv ljud Sensor

Vi kommer att lära hur man bygger en Arduino krets som tar input från någon form av analog sensor (vibrationsgivare, trycksensor, potentiometer) och använda den till utgång ljud från en piezo speaker. Detta gäller till exempel lär du dig att ansluta...

Hur man använder datorn registrerar - lektion 1 - bitars grunderna, maskering, logik verksamhet

dator register är svåra att använda, men värt att lära sig hur man använder. De ser ut som nummer, men fungerar som en serie av kryssrutor. Varje bit kan ha en annan funktion. Att sätta en 1 eller en check kommer att aktivera något. Ändra 1 till en 0...

Sällskapsdjur hälsa keeper (Intel IoT)

Detta projekt syftar till att ta hand om ditt husdjurs hälsa när du inte runt, PHK feeds ditt husdjur enligt den inställd på timern och övervaka hur det är att få matas, inklusive hur mycket vatten och foder det tar. Utnyttja kraften hos IP-kamera oc...

STM32F103 GPIO Input (med Keil och STMCubeMX)

I denna Tutorial kommer jag visa dig hur att få input från GPIO stift.Vi tar input från den blå knappen på vår STM32 styrelse att byta lampan på samma styrelse.Denna handledning är uppdelad i tre steg:Steg 1: Skapa projekt i STM32CubeMXSteg 2: Skriva...