image of READY prompt

Wang2200.org

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"