Listing of file='CUBE' on disk='vmedia/games-droz01.wvd.zip'
# Sector 675, program filename = 'CUBE' 0010 DIM A$(6,9)1,B$(6,9)1,H$(6)1,L(6,2),X$5,K$2 0020 DIM C$(9)1, F$(9)1, Y5$1, N$(40)16, N1$(3)16, X1$(54)2, X2$(54)2 0030 DIM T1$(3,6)9,X$(6)9,Y$(6)9,T$(40,6)9,T$63,L$63, X3$(54)1 0040 H$()="+* "&HEX(81868B) 0050 F$()="UFRBLD" 0060 FOR A=1 TO 6 : FOR B=1 TO 9 : A$(A,B)=H$(A) : NEXT B,A 0070 RESTORE LINE 80 : MAT READ L 0080 DATA 8,25, 16,25, 8,45, 0,25, 8,5, 1,7 0090 RESTORE LINE 6000 : MAT READ T1$ : T$()=T1$() & ALL(00) 0100 RESTORE LINE 6700 : MAT READ N1$ : N$()=N1$() : N=3 0110 GOSUB '80 0120 PRINT HEX(0306); 0130 GOSUB '101 : GOSUB '100 0140 GOSUB '150 : GOSUB '85(L$) : GOSUB '51(Y$()) : GOSUB '100 : GOTO 140 1000 END 1005 REM %UPDATE CUBE 1010 DEFFN'100 1020 FOR S=1 TO 6 1030 FOR X=1 TO 3 1040 FOR Y=1 TO 3 1050 P=Y*3+X-3 1060 IF A$(S,P)=B$(S,P) THEN 1090 1070 X$=HEX(09)&ALL(A$(S,P)) 1080 PRINT AT(2*Y+L(S,1)-2,5*X+L(S,2)-5);STR(X$);HEX(0A0808080808);STR(X$); 1090 NEXT Y,X,S 1100 B$()=A$() 1110 RETURN 2000 REM %DISPLAY GRID 2001 DEFFN'101 2010 FOR S=1 TO 6 2020 PRINT AT(L(S,1)+5, L(S,2)+16);F$(S); 2030 FOR X=1 TO 3 2040 FOR Y=1 TO 3 2050 PRINT AT(Y*2+L(S,1)-2, X*5+L(S,2)-5); BOX(2,5); 2060 NEXT Y,X,S 2070 RETURN 2500 REM % TRANSLATE CUBE 2510 DEFFN'50(A) 2520 Y$()=STR(T$(),A*54-53,54) 2530 DEFFN'51(Y$()) 2540 $TRAN(Y$(),A$()) : A$()=Y$() : RETURN 3000 REM %TRANSLATE TRANSLATION 3010 DEFFN'60(A) 3020 X$()=STR(T$(),A*54-53,54) 3021 DEFFN'61(X$()) 3025 $TRAN(X$(),Y$()) : Y$()=X$() : RETURN 3200 REM %INVERSE TRANSLATE TRANSLATION 3210 DEFFN'65(A) 3220 X3$()=STR(T$(),A*54-53,54) : MAT SORT X3$() TO X1$(),X2$() : MAT MOVE X2$()(2) TO X3$() : X$()=X3$() SUB ALL(01) : GOSUB '61(X$()) : RETURN 3500 REM %BUILD RESIDENT TRANSFORMATIONS 3510 DEFFN'80 3520 RESTORE LINE 5010 3530 READ N$ : IF N$="END" THEN RETURN : READ T$ 3540 GOSUB '85(T$) 3550 N=N+1 : STR(T$(),N*54-53)=Y$() : N$(N)=N$ : GOTO 3530 4000 REM %INPUT TRANSFORMATION 4001 DEFFN'150 4010 PRINT AT(22,0,63); : L$=" " : LINPUT L$ 4020 PRINT HEX(06); : RETURN 4500 REM % BUILD A TRANSFORMATION 4510 DEFFN'85(T$) 4520 Y$()=ALL(FF) : STR(Y$(),,53)=ADD STR(Y$(),2,53) : Y$()=SUBC ALL(CA) 4530 IF T$=" " THEN RETURN 4540 P=POS(T$=" ") : L$=STR(T$,,P) : T$=STR(T$,P+1) : C=1 : IF STR(L$,P-1)<>"-" THEN 4541 : C=-1 : STR(L$,P-1)=" " 4541 MAT SEARCH N$(),=L$ TO K$ STEP 2 : IF K$<>HEX(0000) THEN 4550 : PRINT HEX(07); : GOTO 4530 4550 A=(VAL(K$,2)+15)/16 : IF C=-1 THEN GOSUB '65(A) : ELSE GOSUB '60(A) : GOTO 4530 5000 REM %TRANSFORMATIONS 5010 DATA "CD","CU-" 5025 DATA "CB","CF-" 5030 DATA "CL","CD CB CU" 5040 DATA "CR","CL-" 5100 DATA "L","CF CF R CF CF" 5110 DATA "B","CU R CD" 5120 DATA "F","CD R CU" 5130 DATA "U","CR F CL" 5140 DATA "D","CL CL U CL CL" 5150 DATA "H","U- D CU" 5160 DATA "V","CB H CF" 5170 DATA "M","CL H CR" 5180 DATA "RB.TO.FD","R- D R H R- D- R" 5190 DATA "LB.TO.FD","L D- L- H- L D L-" 5195 DATA "FLIP","R R H H R R H H" 5196 DATA "ROTATE:RB&RF&LB","R R H R R H-" 5200 DATA "ROTATE:LF&RF","RB.TO.FD L L LB.TO.FD L L FLIP" 5210 DATA "SWITCH:LBD&RBD","R- D- R F D- F- R- D R D D" 5220 DATA "ROTATE:LBD&RBD","R- D R D F D- F- L D- L- D- F- D F" 5300 DATA "END" 5400 REM %SOLUTION 5410 REM 1) First solve the top by intuition! 5411 REM 5420 REM 2) You are now to get the bottom corners in the correct position 5430 REM but not necessarily in the correct orientation. Use simple 5440 REM cube rotations coupled with the "switch rbd and lbd" macros 5450 REM to put the corners to acheive correct positioning. 5461 REM 5470 REM 3) Now you should orientate the corners with simple cube rotations 5480 REM and the "rotate lbd and rbd" macro. You may have to apply this 5490 REM macro twice to achieve the desired results. You should note that 5500 REM doing the inverse of this macro rotates in the opposite 5510 REM direction! 5511 REM 5520 REM 4) Now you should move the bottoms sides into place. Do this by 5530 REM using the "rb to fd" macro. 5541 REM 5550 REM 5) Now use the "flip" and "rotate rb, rf, and lb" macros to solve 5551 REM a total of three sides. 5552 REM 5553 REM 6) Use the "rotate lf and rf" macro to solve the whole cube. 5554 REM 5570 REM 7) If you understand these direction you are mentally disturbed and 5580 REM should have yourself committed for life! 5581 REM 5590 REM 8) Good luck! You'll need it! 6000 REM %BASIC ROTATIONS 6010 REM ROTATE CUBE FROM UP 6020 DATA HEX(060300070401080502) 6030 DATA HEX(1815121916131A1714) 6040 DATA HEX(211E1B221F1C23201D) 6050 DATA HEX(2A27242B28252C2926) 6060 DATA HEX(0F0C09100D0A110E0B) 6070 DATA HEX(33302D34312E35322F) 6080 REM ROTATE RIGHT FACE 6090 DATA HEX(00010B03040E060711) 6100 DATA HEX(090A350C0D320F102F) 6110 DATA HEX(1815121916131A1714) 6120 DATA HEX(1B1C021E1F05212208) 6130 DATA HEX(2425262728292A2B2C) 6140 DATA HEX(2D2E2330312033341D) 6150 REM ROTATE CUBE FROM FRONT 6160 DATA HEX(2425262728292A2B2C) 6170 DATA HEX(0F0C09100D0A110E0B) 6180 DATA HEX(000102030405060708) 6190 DATA HEX(1D20231C1F221B1E21) 6200 DATA HEX(2F2E2D323130353433) 6210 DATA HEX(1413121716151A1918) 6300 REM %BASIC COMMANDS 6700 DATA "CU","R","CF" 9000 REM %SAVE 9999 %SCRATCH T "CUBE": SAVE T()"CUBE"