1 REM Ins{nd av Peter M|rtsell-Vince <1343> 1989-09-16 20.46.50 (DUMP) Liten information om programmet "hanoi.bas" =========================================== I Hanoi l{r det sitta munkar som flyttar brickor fr}n ett "torn" till ett annat. N{r de flyttat 64 brickor s} g}r jorden under. (de flyttar en bricka i timmen). Brickorna kan naturligtvis inte flyttas hur som helst (d} vore det ju ingen sport) utan de flyttas enligt vissa regler: * Det finns tre torn * Man kan bara flytta en bricka }t g}ngen fr}n ett torn till ett annat. * Ingen "st|rre" bricka f}r ligga p} en "mindre". (I ursprungsh|gen ligger den st|rsta l{ngst ned och den minsta h|gst upp) Teorin bakom programmet ======================= N{r man b|rjar har man N brickor i h|g A (=torn 1) som alla ska flyttas |ver till h|g B (=torn 3). Eftersom den st|rsta brickan i h|g A ska ligga l{ngst ned i h|g B m}ste man f|rst flytta |ver N-1 brickor till h|g C (=torn 2 i b|rjan). Nu {r bottenbrickan frilagd, s} man flyttar den till h|g B. Sedan flyttar man helt enkelt resten av brickorna fr}n C till B. (N-1). F|r att flytta N-1 brickor anropas proceduren "inifr}n" (rekursivt). Allt sker helt automatiskt, det {r enklare {n det verkar. Programmets nytta ================= Det kan t ex anv{ndas av stressade munkar som inte vill g} upp mitt i natten bara f|r att flytta en bricka. Programmet kan {ven anv{ndas som "avstressare", man s{tter ig}ng det och tittar p} hur h|garna |kar och minskar. Man kan {ven k|ra det av ren nyfikenhet, tex "hur l}ng tid tar det att flytta en h|g med 15 brickor?" (f|rmodligen l}}}ng tid, f|r att flytta en h|g med n brickor kr{vs (n^2)-1 flyttningar. Programmet har en begr{nsning p} 20 brickor, mest d{rf|r att de flesta sk{rmar har 23-25 rader. (Om man anv{nder en 1600'a kan man naturligtvis {ndra detta om man vill.Man b|r dock vara medveten om tids}tg}ngen f|r att flytta en h|g med 50-60 brickor.) Teknisk information =================== Programmet {r skrivet s} att det (f|rhoppningsvis) fungerar med basicII. Minneskrav: Eftersom programmet inneh}ller en rekursiv funktion {r det sv}rt att s{ga n}got om minnesbehovet. Sj{lv har jag inte r}kat ut f|r n}got proglem {n. Det reserverar plats f|r en matris 21*4 (20*3) (heltal) f|r att h}lla reda p} var brickorna {r. <1343> Peter M|rtsell --- Om problemet {r l|st f|r femtielfte g}ngen, uttjatat eller inaktuellt kan det lagras i /dev/nul.