mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-13 16:04:05 +09:00
basic: amazing.bas is working
This commit is contained in:
@@ -12,8 +12,8 @@
|
|||||||
105 IF H<>1 AND V<>1 THEN GOTO 110
|
105 IF H<>1 AND V<>1 THEN GOTO 110
|
||||||
106 PRINT "MEANINGLESS DIMENSIONS. TRY AGAIN."
|
106 PRINT "MEANINGLESS DIMENSIONS. TRY AGAIN."
|
||||||
107 GOTO 100
|
107 GOTO 100
|
||||||
110 W=DIM(H,V)
|
110 WS=DIM(H,V)
|
||||||
111 V=DIM(H,V)
|
111 VS=DIM(H,V)
|
||||||
120 PRINT
|
120 PRINT
|
||||||
130 PRINT
|
130 PRINT
|
||||||
140 PRINT
|
140 PRINT
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
180 NEXT
|
180 NEXT
|
||||||
190 PRINT "."
|
190 PRINT "."
|
||||||
195 C=1
|
195 C=1
|
||||||
196 W(X,1)=C
|
196 WS(X,1)=C
|
||||||
197 C=C+1
|
197 C=C+1
|
||||||
200 R=X
|
200 R=X
|
||||||
201 S=1
|
201 S=1
|
||||||
@@ -43,13 +43,13 @@
|
|||||||
231 S=S+1
|
231 S=S+1
|
||||||
232 GOTO 250
|
232 GOTO 250
|
||||||
240 R=R+1
|
240 R=R+1
|
||||||
250 IF W(R,S)==0 THEN GOTO 210
|
250 IF WS(R,S)==0 THEN GOTO 210
|
||||||
260 IF R-1==0 THEN GOTO 530
|
260 IF R-1==0 THEN GOTO 530
|
||||||
265 IF W(R-1,S)<>0 THEN GOTO 530
|
265 IF WS(R-1,S)<>0 THEN GOTO 530
|
||||||
270 IF S-1==0 THEN GOTO 390
|
270 IF S-1==0 THEN GOTO 390
|
||||||
280 IF W(R,S-1)<>0 THEN GOTO 390
|
280 IF WS(R,S-1)<>0 THEN GOTO 390
|
||||||
290 IF R==H THEN GOTO 330
|
290 IF R==H THEN GOTO 330
|
||||||
300 IF W(R+1,S)<>0 THEN GOTO 330
|
300 IF WS(R+1,S)<>0 THEN GOTO 330
|
||||||
310 X=INT(RND(1)*3+1)
|
310 X=INT(RND(1)*3+1)
|
||||||
320 REM ON X GOTO 790,820,860
|
320 REM ON X GOTO 790,820,860
|
||||||
321 IF X==1 THEN GOTO 790
|
321 IF X==1 THEN GOTO 790
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
334 IF Z==1 THEN GOTO 370
|
334 IF Z==1 THEN GOTO 370
|
||||||
338 Q=1
|
338 Q=1
|
||||||
339 GOTO 350
|
339 GOTO 350
|
||||||
340 IF W(R,S+1)<>0 THEN GOTO 370
|
340 IF WS(R,S+1)<>0 THEN GOTO 370
|
||||||
350 X=INT(RND(1)*3+1)
|
350 X=INT(RND(1)*3+1)
|
||||||
360 REM ON X GOTO 790,820,910
|
360 REM ON X GOTO 790,820,910
|
||||||
361 IF X==1 THEN GOTO 790
|
361 IF X==1 THEN GOTO 790
|
||||||
@@ -68,12 +68,12 @@
|
|||||||
370 X=INT(RND(1)*2+1)
|
370 X=INT(RND(1)*2+1)
|
||||||
380 REM ON X GOTO 790,820
|
380 REM ON X GOTO 790,820
|
||||||
390 IF R==H THEN GOTO 470
|
390 IF R==H THEN GOTO 470
|
||||||
400 IF W(R+1,S)<>0 THEN GOTO 470
|
400 IF WS(R+1,S)<>0 THEN GOTO 470
|
||||||
405 IF S<>V THEN GOTO 420
|
405 IF S<>V THEN GOTO 420
|
||||||
410 IF Z==1 THEN GOTO 450
|
410 IF Z==1 THEN GOTO 450
|
||||||
415 Q=1
|
415 Q=1
|
||||||
416 GOTO 430
|
416 GOTO 430
|
||||||
420 IF W(R,S+1)<>0 THEN GOTO 450
|
420 IF WS(R,S+1)<>0 THEN GOTO 450
|
||||||
430 X=INT(RND(1)*3+1)
|
430 X=INT(RND(1)*3+1)
|
||||||
440 REM ON X GOTO 790,860,910
|
440 REM ON X GOTO 790,860,910
|
||||||
441 IF X==1 THEN GOTO 790
|
441 IF X==1 THEN GOTO 790
|
||||||
@@ -85,21 +85,21 @@
|
|||||||
480 IF Z==1 THEN GOTO 520
|
480 IF Z==1 THEN GOTO 520
|
||||||
485 Q=1
|
485 Q=1
|
||||||
486 GOTO 500
|
486 GOTO 500
|
||||||
490 IF W(R,S+1)<>0 THEN GOTO 520
|
490 IF WS(R,S+1)<>0 THEN GOTO 520
|
||||||
500 X=INT(RND(1)*2+1)
|
500 X=INT(RND(1)*2+1)
|
||||||
510 REM ON X GOTO 790,910
|
510 REM ON X GOTO 790,910
|
||||||
511 IF X==1 THEN GOTO 790
|
511 IF X==1 THEN GOTO 790
|
||||||
512 IF X==2 THEN GOTO 910
|
512 IF X==2 THEN GOTO 910
|
||||||
520 GOTO 790
|
520 GOTO 790
|
||||||
530 IF S-1==0 THEN GOTO 670
|
530 IF S-1==0 THEN GOTO 670
|
||||||
540 IF W(R,S-1)<>0 THEN GOTO 670
|
540 IF WS(R,S-1)<>0 THEN GOTO 670
|
||||||
545 IF R==H THEN GOTO 610
|
545 IF R==H THEN GOTO 610
|
||||||
547 IF W(R+1,S)<>0 THEN GOTO 610
|
547 IF WS(R+1,S)<>0 THEN GOTO 610
|
||||||
550 IF S<>V THEN GOTO 560
|
550 IF S<>V THEN GOTO 560
|
||||||
552 IF Z==1 THEN GOTO 590
|
552 IF Z==1 THEN GOTO 590
|
||||||
554 Q=1
|
554 Q=1
|
||||||
555 GOTO 570
|
555 GOTO 570
|
||||||
560 IF W(R,S+1)<>0 THEN GOTO 590
|
560 IF WS(R,S+1)<>0 THEN GOTO 590
|
||||||
570 X=INT(RND(1)*3+1)
|
570 X=INT(RND(1)*3+1)
|
||||||
580 REM ON X GOTO 820,860,910
|
580 REM ON X GOTO 820,860,910
|
||||||
581 IF X==0 THEN GOTO 820
|
581 IF X==0 THEN GOTO 820
|
||||||
@@ -113,19 +113,19 @@
|
|||||||
620 IF Z==1 THEN GOTO 660
|
620 IF Z==1 THEN GOTO 660
|
||||||
625 Q=1
|
625 Q=1
|
||||||
626 GOTO 640
|
626 GOTO 640
|
||||||
630 IF W(R,S+1)<>0 THEN GOTO 660
|
630 IF WS(R,S+1)<>0 THEN GOTO 660
|
||||||
640 X=INT(RND(1)*2+1)
|
640 X=INT(RND(1)*2+1)
|
||||||
650 REM ON X GOTO 820,910
|
650 REM ON X GOTO 820,910
|
||||||
651 IF X==0 THEN GOTO 820
|
651 IF X==0 THEN GOTO 820
|
||||||
652 IF X==1 THEN GOTO 910
|
652 IF X==1 THEN GOTO 910
|
||||||
660 GOTO 820
|
660 GOTO 820
|
||||||
670 IF R==H THEN GOTO 740
|
670 IF R==H THEN GOTO 740
|
||||||
680 IF W(R+1,S)<>0 THEN GOTO 740
|
680 IF WS(R+1,S)<>0 THEN GOTO 740
|
||||||
685 IF S<>V THEN GOTO 700
|
685 IF S<>V THEN GOTO 700
|
||||||
690 IF Z==1 THEN GOTO 730
|
690 IF Z==1 THEN GOTO 730
|
||||||
695 Q=1
|
695 Q=1
|
||||||
696 GOTO 830
|
696 GOTO 830
|
||||||
700 IF W(R,S+1)<>0 THEN GOTO 730
|
700 IF WS(R,S+1)<>0 THEN GOTO 730
|
||||||
710 X=INT(RND(1)*2+1)
|
710 X=INT(RND(1)*2+1)
|
||||||
720 REM ON X GOTO 860,910
|
720 REM ON X GOTO 860,910
|
||||||
721 IF X==0 THEN GOTO 860
|
721 IF X==0 THEN GOTO 860
|
||||||
@@ -135,48 +135,48 @@
|
|||||||
750 IF Z==1 THEN GOTO 780
|
750 IF Z==1 THEN GOTO 780
|
||||||
755 Q=1
|
755 Q=1
|
||||||
756 GOTO 770
|
756 GOTO 770
|
||||||
760 IF W(R,S+1)<>0 THEN GOTO 780
|
760 IF WS(R,S+1)<>0 THEN GOTO 780
|
||||||
770 GOTO 910
|
770 GOTO 910
|
||||||
780 GOTO 1000
|
780 GOTO 1000
|
||||||
790 W(R-1,S)=C
|
790 WS(R-1,S)=C
|
||||||
800 C=C+1
|
800 C=C+1
|
||||||
801 V(R-1,S)=2
|
801 VS(R-1,S)=2
|
||||||
802 R=R-1
|
802 R=R-1
|
||||||
810 IF C==H*V+1 THEN GOTO 1010
|
810 IF C==H*V+1 THEN GOTO 1010
|
||||||
815 Q=0
|
815 Q=0
|
||||||
816 GOTO 260
|
816 GOTO 260
|
||||||
820 W(R,S-1)=C
|
820 WS(R,S-1)=C
|
||||||
830 C=C+1
|
830 C=C+1
|
||||||
840 V(R,S-1)=1
|
840 VS(R,S-1)=1
|
||||||
841 S=S-1
|
841 S=S-1
|
||||||
842 IF C==H*V+1 THEN GOTO 1010
|
842 IF C==H*V+1 THEN GOTO 1010
|
||||||
850 Q=0
|
850 Q=0
|
||||||
851 GOTO 260
|
851 GOTO 260
|
||||||
860 W(R+1,S)=C
|
860 WS(R+1,S)=C
|
||||||
870 C=C+1
|
870 C=C+1
|
||||||
871 IF V(R,S)==0 THEN GOTO 880
|
871 IF VS(R,S)==0 THEN GOTO 880
|
||||||
875 V(R,S)=3
|
875 VS(R,S)=3
|
||||||
876 GOTO 890
|
876 GOTO 890
|
||||||
880 V(R,S)=2
|
880 VS(R,S)=2
|
||||||
890 R=R+1
|
890 R=R+1
|
||||||
900 IF C==H*V+1 THEN GOTO 1010
|
900 IF C==H*V+1 THEN GOTO 1010
|
||||||
905 GOTO 530
|
905 GOTO 530
|
||||||
910 IF Q==1 THEN GOTO 960
|
910 IF Q==1 THEN GOTO 960
|
||||||
920 W(R,S+1)=C
|
920 WS(R,S+1)=C
|
||||||
921 C=C+1
|
921 C=C+1
|
||||||
922 IF V(R,S)==0 THEN GOTO 940
|
922 IF VS(R,S)==0 THEN GOTO 940
|
||||||
930 V(R,S)=3
|
930 VS(R,S)=3
|
||||||
931 GOTO 950
|
931 GOTO 950
|
||||||
940 V(R,S)=1
|
940 VS(R,S)=1
|
||||||
950 S=S+1
|
950 S=S+1
|
||||||
951 IF C==H*V+1 THEN GOTO 1010
|
951 IF C==H*V+1 THEN GOTO 1010
|
||||||
955 GOTO 260
|
955 GOTO 260
|
||||||
960 Z=1
|
960 Z=1
|
||||||
970 IF V(R,S)==0 THEN GOTO 980
|
970 IF VS(R,S)==0 THEN GOTO 980
|
||||||
975 V(R,S)=3
|
975 VS(R,S)=3
|
||||||
976 Q=0
|
976 Q=0
|
||||||
977 GOTO 1000
|
977 GOTO 1000
|
||||||
980 V(R,S)=1
|
980 VS(R,S)=1
|
||||||
981 Q=0
|
981 Q=0
|
||||||
982 R=1
|
982 R=1
|
||||||
983 S=1
|
983 S=1
|
||||||
@@ -185,15 +185,15 @@
|
|||||||
1010 FOR J=1 TO V
|
1010 FOR J=1 TO V
|
||||||
1011 PRINT "I";
|
1011 PRINT "I";
|
||||||
1012 FOR I=1 TO H
|
1012 FOR I=1 TO H
|
||||||
1013 IF V(I,J)<2 THEN GOTO 1030
|
1013 IF VS(I,J)<2 THEN GOTO 1030
|
||||||
1020 PRINT " ";
|
1020 PRINT " ";
|
||||||
1021 GOTO 1040
|
1021 GOTO 1040
|
||||||
1030 PRINT " I";
|
1030 PRINT " I";
|
||||||
1040 NEXT
|
1040 NEXT
|
||||||
1041 PRINT
|
1041 PRINT
|
||||||
1043 FOR I=1 TO H
|
1043 FOR I=1 TO H
|
||||||
1045 IF V(I,J)==0 THEN GOTO 1060
|
1045 IF VS(I,J)==0 THEN GOTO 1060
|
||||||
1050 IF V(I,J)==2 THEN GOTO 1060
|
1050 IF VS(I,J)==2 THEN GOTO 1060
|
||||||
1051 PRINT ": ";
|
1051 PRINT ": ";
|
||||||
1052 GOTO 1070
|
1052 GOTO 1070
|
||||||
1060 PRINT ":--";
|
1060 PRINT ":--";
|
||||||
|
|||||||
@@ -249,10 +249,10 @@ let twoArgNum = function(lnum, args, action) {
|
|||||||
if (args.length != 2) throw lang.syntaxfehler(lnum, args.length+lang.aG);
|
if (args.length != 2) throw lang.syntaxfehler(lnum, args.length+lang.aG);
|
||||||
var rsvArg0 = resolve(args[0]);
|
var rsvArg0 = resolve(args[0]);
|
||||||
if (rsvArg0 === undefined) throw lang.refError(lnum, args[0]);
|
if (rsvArg0 === undefined) throw lang.refError(lnum, args[0]);
|
||||||
if (isNaN(rsvArg0)) throw lang.illegalType(lnum, args[0]);
|
if (isNaN(rsvArg0)) throw lang.illegalType(lnum, "LH:"+Object.entries(args[0]));
|
||||||
var rsvArg1 = resolve(args[1]);
|
var rsvArg1 = resolve(args[1]);
|
||||||
if (rsvArg1 === undefined) throw lang.refError(lnum, args[1]);
|
if (rsvArg1 === undefined) throw lang.refError(lnum, args[1]);
|
||||||
if (isNaN(rsvArg1)) throw lang.illegalType(lnum, args[1]);
|
if (isNaN(rsvArg1)) throw lang.illegalType(lnum, "RH:"+Object.entries(args[1]));
|
||||||
return action(rsvArg0, rsvArg1);
|
return action(rsvArg0, rsvArg1);
|
||||||
}
|
}
|
||||||
let threeArg = function(lnum, args, action) {
|
let threeArg = function(lnum, args, action) {
|
||||||
|
|||||||
Reference in New Issue
Block a user