Towers of Hanoi: Difference between revisions

Added Quite BASIC
(Added Asymptote)
(Added Quite BASIC)
 
Line 1,237:
170 END IF
180 END DEF</syntaxhighlight>
 
==={{header|Quite BASIC}}===
{{trans|BASIC}}
<syntaxhighlight lang="qbasic">100 CLS
120 LET D = 4 : REM SHOULD EQUAL NUMBER OF DISKS
130 ARRAY N: ARRAY F: ARRAY T: ARRAY V: REM STACK PER PARAMETER
140 LET S = 0 : REM STACK POINTER
150 LET N(S) = 4: REM START WITH 4 DISCS
160 LET F(S) = 1: REM ON PEG 1
170 LET T(S) = 2: REM MOVE TO PEG 2
180 LET V(S) = 3: REM VIA PEG 3
190 GOSUB 220
200 END
210 REM MOVE SUBROUTINE
220 IF N(S) = 0 THEN RETURN
230 LET O = S : REM STORE STACK POINTER
240 LET S = S + 1 : REM INCREMENT STACK POINTER
250 LET N(S) = N(O) - 1: REM MOVE N-1 DISCS
260 LET F(S) = F(O) : REM FROM START PEG
270 LET T(S) = V(O) : REM TO VIA PEG
280 LET V(S) = T(O) : REM VIA TO PEG
290 GOSUB 220
300 LET O = S - 1 : REM O WILL HAVE CHANGED
310 PRINT "MOVE DISC FROM "; F(O); " TO "; T(O)
320 LET N(S) = N(O) - 1: REM MOVE N-1 DISCS
330 LET F(S) = V(O) : REM FROM VIA PEG
340 LET T(S) = T(O) : REM TO DEST PEG
350 LET V(S) = F(O) : REM VIA FROM PEG
360 GOSUB 220
370 LET S = S - 1 : REM RESTORE STACK POINTER FOR CALLER
380 RETURN
390 END</syntaxhighlight>
{{out}}
<pre>MOVE DISC FROM 1 TO 3
MOVE DISC FROM 1 TO 2
MOVE DISC FROM 3 TO 2
MOVE DISC FROM 1 TO 3
MOVE DISC FROM 2 TO 1
MOVE DISC FROM 2 TO 3
MOVE DISC FROM 1 TO 3
MOVE DISC FROM 1 TO 2
MOVE DISC FROM 3 TO 2
MOVE DISC FROM 3 TO 1
MOVE DISC FROM 2 TO 1
MOVE DISC FROM 3 TO 2
MOVE DISC FROM 1 TO 3
MOVE DISC FROM 1 TO 2
MOVE DISC FROM 3 TO 2</pre>
 
=={{header|Batch File}}==
2,169

edits