Towers of Hanoi: Difference between revisions
Content added Content deleted
(Added TI-83 Basic (Non recursive)) |
(Added BBC BASIC) |
||
Line 170: | Line 170: | ||
250 SP = SP - 1 : REM RESTORE STACK POINTER FOR CALLER |
250 SP = SP - 1 : REM RESTORE STACK POINTER FOR CALLER |
||
260 RETURN</lang> |
260 RETURN</lang> |
||
=={{header|BBC BASIC}}== |
|||
{{works with|BBC BASIC for Windows}} |
|||
<lang bbcbasic> DIM Disc$(13),Size%(3) |
|||
FOR disc% = 1 TO 13 |
|||
Disc$(disc%) = STRING$(disc%," ")+STR$disc%+STRING$(disc%," ") |
|||
IF disc%>=10 Disc$(disc%) = MID$(Disc$(disc%),2) |
|||
Disc$(disc%) = CHR$17+CHR$(128+disc%-(disc%>7))+Disc$(disc%)+CHR$17+CHR$128 |
|||
NEXT disc% |
|||
MODE 3 |
|||
OFF |
|||
ndiscs% = 13 |
|||
FOR n% = ndiscs% TO 1 STEP -1 |
|||
PROCput(n%,1) |
|||
NEXT |
|||
INPUT TAB(0,0) "Press Enter to start" dummy$ |
|||
PRINT TAB(0,0) SPC(20); |
|||
PROChanoi(ndiscs%,1,2,3) |
|||
VDU 30 |
|||
END |
|||
DEF PROChanoi(a%,b%,c%,d%) |
|||
IF a%=0 ENDPROC |
|||
PROChanoi(a%-1,b%,d%,c%) |
|||
PROCtake(a%,b%) |
|||
PROCput(a%,c%) |
|||
PROChanoi(a%-1,d%,c%,b%) |
|||
ENDPROC |
|||
DEF PROCput(disc%,peg%) |
|||
PRINTTAB(13+26*(peg%-1)-disc%,20-Size%(peg%))Disc$(disc%); |
|||
Size%(peg%) = Size%(peg%)+1 |
|||
ENDPROC |
|||
DEF PROCtake(disc%,peg%) |
|||
Size%(peg%) = Size%(peg%)-1 |
|||
PRINTTAB(13+26*(peg%-1)-disc%,20-Size%(peg%))STRING$(2*disc%+1," "); |
|||
ENDPROC</lang> |
|||
=={{header|Bracmat}}== |
=={{header|Bracmat}}== |