100 REM SAVE HANOITRE 110 REM +++++++++++++++++++++++++++++++ 120 REM ++ TORNEN I HANOI ++ 130 REM +++++++++++++++++++++++++++++++ 140 REM ++ VERSION 1.0 820922 ++ 150 REM ++ KONSTR. ARNE SP]NGTORP ++ 160 REM ++ <1218> STUREGATAN 9,11 ++ 170 REM ++ 632 30 E-TUNA ++ 180 REM ++ 016/42 45 04 ++ 190 REM +++++++++++++++++++++++++++++++ 200 REM ++ \VERS[TTNING OCH [NDRING ++ 210 REM ++ AV "TOWERS OF HANOI" ++ 220 REM ++ I "PRACTICAL COMPUTING" ++ 230 REM ++ FR]N SEPTEMBER 1982 ++ 240 REM ++ KONSTR. G J BORIS ALLAN ++ 250 REM +++++++++++++++++++++++++++++++ 260 REM 270 REM ++ DIMENSIONERING/LADDNING 280 REM 290 DIM T%(3%,23%) 300 DIM P%(23%,2%) 310 DIM S$(23%)=12% 320 DATA ' j% ' 330 DATA ' o% ' 340 DATA ' o/ ' 350 DATA ' *o/ ' 360 DATA ' *o/% ' 370 DATA ' /o/% ' 380 DATA ' /o// ' 390 DATA ' */o// ' 400 DATA ' */o//% ' 410 DATA ' //o//% ' 420 DATA ' //o/// ' 430 DATA ' *//o/// ' 440 DATA ' *//o///% ' 450 DATA ' ///o///% ' 460 DATA ' ///o//// ' 470 DATA ' *///o//// ' 480 DATA ' *///o////% ' 490 DATA ' ////o////% ' 500 DATA ' ////o///// ' 510 DATA '*////o///// ' 520 DATA '*////o/////%' 530 DATA '/////o/////%' 540 DATA '/////o//////' 550 FOR I%=1% TO 23% 560 READ S$(I%) : NEXT I% 570 B0$=' j ' 580 B9$=CHR$(151%)+STRING$(38%,127%) 590 K%(1%)=1% : K%(2%)=14% : K%(3%)=27% 600 REM 610 REM MENY MED VAL AV ANTAL SKIVOR 620 REM 630 ; CHR$(12%) 640 ; "T O R N E N I H A N O I" 650 ; "=========================" : ; 660 ONERRORGOTO 660 670 ; "ANTAL SKIVOR (1-23) "; 680 INPUT N% : ONERRORGOTO 0 : N=N% 690 IF N%<1% OR N%>23% 660 700 ; : ; "EN FLYTTNING I TAGET?"; 710 GET G$ 720 IF G$="J" E1%=1% ELSE E1%=0% 730 REM 740 REM INITIERING 750 REM 760 R1%=(24-N)/2+((N/2)=(INT(N/2))) 770 R9%=R1%+N% : X%=0% 780 ; CHR$(12%) : FOR R%=R1% TO R9%-1% 790 ; CUR(R%,0%)CHR$(151%); 800 ; CUR(R%,1%); 810 X%=X%+1% : ; S$(X%); 820 P%(X%,2%)=R% 830 ; CUR(R%,14%)B0$; 840 ; CUR(R%,27%)B0$; 850 NEXT R% 860 ; CUR(R9%,0%)B9$; 870 FOR I1%=1% TO 3% 880 FOR I2%=0% TO N% 890 T%(I1%,I2%)=0% 900 NEXT I2% : NEXT I1% 910 FOR I%=1% TO N% 920 S%=N%-I%+1% 930 T%(1%,I%)=S% 940 P%(I%,1%)=1% 950 NEXT I% 960 T%(1%,0%)=N% 970 T%(2%,0%)=R9% 980 T%(3%,0%)=R9% 990 IF E1% GET G$ 1000 REM 1010 REM BEARBETNING 1020 REM 1030 V%=0% 1040 V%=V%+1% : I%=1% : M%=I% 1050 IF (M% AND V%)=M% 1080 1060 I%=I%+1% : IF I%>N% 1260 1070 M%=M%+M% : GOTO 1050 1080 ON (I% AND 1%)+1% GOTO 1090,1120 1090 T1%=P%(I%,1%) : T2%=T1%-1% 1100 IF T2%<1% T2%=3% 1110 GOTO 1140 1120 T1%=P%(I%,1%) : T2%=T1%+1% 1130 IF T2%>3% T2%=1% 1140 P%(I%,1%)=T2% : C1%=K%(T1%) 1150 L1%=P%(I%,2%) : L2%=T%(T2%,0%)-1% 1160 P%(I%,2%)=L2% : C2%=K%(T2%) 1170 T%(T1%,0%)=L1%+1% 1180 T%(T2%,0%)=L2% 1190 ; CUR(L2%,C2%)S$(I%) 1200 ; CUR(L1%,C1%)B0$ 1210 IF E1% GET G$ 1220 GOTO 1040 1230 REM 1240 REM FORTS[TTNING/AVSLUTNING 1250 REM 1260 ; CUR(R9%,1%)"MER J N "; 1270 ; CUR(R9%,6%); : GET G$ 1280 IF G$="J" 630 ELSE END