10 CLS
20 WIDTH 20,8
30 DEFINT A-Z
40 OPTIONBASE 0
50 R$=TIME$
60 R1=VAL(LEFT$(R$,2))
70 R2=VAL(MID$(R$,4,2))
80 R3=VAL(RIGHT$(R$,2))
90 R=R1+R2+R3
100 RANDOMIZE R
110 CLS
120 LOCATES0,0,0:LOCATE0,0
130 FORI=0 TO3
140 A(I)=INT(RND*16)+1
150 IFA(I)>15 THENA(I)=15
160 PRINTSTRING$(A(I),"")
170 NEXTI
180 X=A(0):Y=0
190 LOCATES0,0:LOCATEX,Y
200 PRINT"";
210 S$=INPUT$(1)
220 S=ABS(ASC(S$)-27)
230 ONS GOSUB270,340,410,470
240 IFS$=CHR$(13)THENGOSUB530
250 SOUND20,1
260 GOTO210
270 IFX=A(Y)THENRETURN
280 X=X+1
290 LOCATEX-1,Y
300 PRINT"";
310 LOCATEX,Y
320 PRINT"";
330 RETURN
340 IFX=0 THENRETURN
350 X=X-1
360 LOCATEX+1,Y
370 PRINT" ";
380 LOCATEX,Y
390 PRINT"";
400 RETURN
410 LOCATE0,Y
420 PRINTSTRING$(A(Y),"")+" ";
430 Y=(Y+3)MOD4:X=A(Y)
440 LOCATEX,Y
450 PRINT"";
460 RETURN
470 LOCATE0,Y
480 PRINTSTRING$(A(Y),"")+" ";
490 Y=(Y+1)MOD4:X=A(Y)
500 LOCATEX,Y
510 PRINT"";
520 RETURN
530 IFX=A(Y)THENRETURNELSEA(Y)=X
540 IFA(0)+A(1)+A(2)+A(3)=0 THENGOTO770
550 E=16:F=4
560 FORI=0 TO3
570 E0=A((I+1)MOD4)XORA((I+2)MOD4)XORA((I+3)MOD4)
580 IFA(I)>E0 THEN590 ELSE600
590 E=E0:F=I
600 NEXTI
610 IFF=4 THEN620 ELSE650
620 FORI=0 TO3
630 IFA(I)>0 THENF=I:E=A(F)-1
640 NEXTI
650 LOCATEX,Y
660 PRINT" ";
670 FORI=A(F) TOE STEP-1
680 LOCATEI+1,F
690 PRINT" ";
700 LOCATEI,F
710 PRINT"";
720 SOUND20,1
730 NEXTI
740 A(F)=E:X=E:Y=F
750 IFA(0)+A(1)+A(2)+A(3)=0 THENGOTO830
760 RETURN
770 PRINT"";
780 FORI=1TO3
790 FORJ=56TO51STEP-1
800 SOUNDJ,1:SOUND51,1:SOUND56,1
810 NEXTJ,I
820 GOTO110
830 PRINT"";
840 FORI=1TO2
850 FORJ=56TO1STEP-4
860 SOUNDJ,1:SOUNDJ+1,1
870 NEXTJ,I
880 GOTO110
