= THIS PROGRAM SOLVES THE PUZZLE INSTANT INSANITY. IF TWO FACES MATCH FOR THE FIRST TWO BLOCKS, THEN BLOCK 2 IS TURNED, RATHER THAN TRYING ALL POSSIBLE POSITIONS. THE ARRAY COLOR IS THE CURRENT STATE OF THE BLOCKS, OCOLOR THE ORIGINAL, FACE THE VALID COLORS FOR THE BLOCKS FACES.; TYPE LFACE # % A, B, C, D, E, F )" KOLOR# ARRAY(1..4, A..F` OF CHAR" VAR COLOR, OCOLOR 23 ^^ , , 32 , 8 , 20,8,o KOLOR" FACE 10 ^^ , , 32 , 8 , 20,8,o LFACE" TEMP1, TEMP2, CHR 22 ^^ , , 32 , 8 , 20,8,o CHAR" COOR 9 ^^ , , 32 , 8 , 20,8,o ARRAY ( 1..4,1..2` OF INTEGER " KON, FLAGOUT2 27 ^^ , , 32 , 8 , 20,8,o INTEGER" I, CUBE,Q, LOOP, J, THIS, KA, FLAGL, OLOOP, X, Y 60 ^^ , , 32 , 8 , 20,8,o INTEGER" BEGIN WRITE %\ \, \I N S T A N T I N S A N I T Y\, EOL )" = COOR IS AN ARRAY FOR THE TWISTS GIVEN TO EACH OF THE 4 CUBES.; FOR J 10 ^^ , , 32 , 8 , 20,8,o# 1 TO 2 DO FOR I 29 ^^ , , 32 , 8 , 20,8,o#1 TO 4 DO COOR(I,J` 51 ^^ , , 32 , 8 , 20,8,o# 1" OLOOP 14 ^^ , , 32 , 8 , 20,8,o# 0" =THIS IS A FLAG FOR EXITING THE RETURN LOOP; FOR I 13 ^^ , , 32 , 8 , 20,8,o# 1 TO 4 DO BEGIN = THE INITIAL POSITION OF THE CUBES IS READ IN.; REPEAT READ%CHR) UNTIL % % %CHR #\R\) ! %CHR #\B\) ) ! %%CHR #\G\) ! %CHR #\W\ ))) " FACE 10 ^^ , , 32 , 8 , 20,8,o# A" FOR J 11 ^^ , , 32 , 8 , 20,8,o# 1 TO 6 DO BEGIN COLOR(I, FACE` 34 ^^ , , 32 , 8 , 20,8,o# CHR" = OCOLOR IS KEPT AT THE ORIGINAL DATA, AND USED TO RESET CUBES.; OCOLOR(I, FACE` 34 ^^ , , 32 , 8 , 20,8,o# CHR" FACE 18 ^^ , , 32 , 8 , 20,8,o# SUCC%FACE)" READ %CHR)" END" END" I 8 ^^ , , 32 , 8 , 20,8,o# 1" WRITE %\ \, \ORIGINAL POSITIONS\, EOL, \ \, \S E N W ] ;\, EOL )" CHR 11 ^^ , , 32 , 8 , 20,8,o#\ \" FOR KA 11 ^^ , , 32 , 8 , 20,8,o# 1 TO 4 DO BEGIN FACE 10 ^^ , , 32 , 8 , 20,8,o# A" WRITE % \ \)" FOR J 15 ^^ , , 32 , 8 , 20,8,o# 1 TO 6 DO BEGIN WRITE % CHR,COLOR(KA,FACE`)" FACE 20 ^^ , , 32 , 8 , 20,8,o# SUCC%FACE)" END" WRITE %EOL)" END" = WHEN THIS REPEAT LOOP IS EXECUTED, A SOLUTION, OR FAILURE WILL HAVE BEEN REACHED.; REPEAT =EACH TIME A SOLUTION FOR I BLOCKS IS FOUN WE CHECK IF I#4. IF NOT, I IS INCREMENTED.; BEGIN FACE 10 ^^ , , 32 , 8 , 20,8,o# A" J 6 ^^ , , 32 , 8 , 20,8,o# 0" WHILE % %J 16 ^^ ,ˆ , 32 , 136 , 20,88,o 4 ) + % Q#1)) DO BEGIN FLAGOUT2 19 ^^ , , 32 , 8 , 20,8,o# 0" CUBE 14 ^^ , , 32 , 8 , 20,8,o# 1 " Q 8 ^^ , , 32 , 8 , 20,8,o# 1" =Q IS A FLAG FOR FACES OF THE SAME COLOR IN THE SAME DIRECTION ON THE FIRST I CUBES FOUND, 0 IF FOUND, 1 IF NOT.; = THE FOLLOWING CHECKS THE CUBES, AND GIVES Q IT@S APPROPRIATE VALUE.; WHILE % % CUBE 27 ^^ ,ˆ , 32 , 136 , 20,88,o I) + % FLAGOUT2 #0) ) DO BEGIN IF COLOR(CUBE, FACE` # COLOR( I , FACE` THEN BEGIN Q 34 ^^ , , 32 , 8 , 20,8,o# 0" FLAGOUT2 62 ^^ , , 32 , 8 , 20,8,o#1" END" CUBE 21 ^^ , , 32 , 8 , 20,8,o# CUBE &1" END" FACE 15 ^^ , , 32 , 8 , 20,8,o# SUCC%FACE) " J 11 ^^ , , 32 , 8 , 20,8,o# J&1" END" END" IF Q#1 THEN =NO SIDES ARE THE SAME, AND IF I#4 THEN WE; BEGIN =ARE THRU.IF NOT, CHECK THE NEXT CUBE.; IF I 19 ^^ ,ˆ , 32 , 136 , 20,88,o 4 THEN I 30 ^^ , , 32 , 8 , 20,8,o# I& 1 ELSE BEGIN OLOOP 26 ^^ , , 32 , 8 , 20,8,o# 1" WRITE %\ \, \THE SOLUTION HAS BEEN FOUND.\,EOL )" WRITE % \ \, \S E N W ] ;\, EOL )" CHR 17 ^^ , , 32 , 8 , 20,8,o#\ \" FOR KA 17 ^^ , , 32 , 8 , 20,8,o# 1 TO 4 DO BEGIN FACE 14 ^^ , , 32 , 8 , 20,8,o# A" WRITE % \ \ ) " FOR J 14 ^^ , , 32 , 8 , 20,8,o# 1 TO 6 DO BEGIN WRITE % COLOR(KA,FACE`, CHR )" FACE 52 ^^ , , 32 , 8 , 20,8,o#SUCC%FACE)" END" WRITE % EOL)" END" END" END ELSE BEGIN =IF FLAG Q GIVES US A 0 WE TRY TURNING BLOCK I. UNLESS ALL POSSIBLE POSITIONS HAVE BEEN TRIED. THE THE BLOCK IS RESET ANDI 57 ^^ , , 32 , 8 , 20,8,o#I-1.; FLAGL 16 ^^ , , 32 , 8 , 20,8,o# 0" REPEAT = COOR IS THE ARRAY OF TURNS GIVEN TO EACH CUBE, AND STARTS AT 1,1.; = THIS CHECKS IF ALL POSITIONS HAVE BEEN TRIED.; IF % % COOR(I,1` [ 4 ) + % COOR(I,2` [ 6 )) THEN BEGIN = THE FOLLOWING RESETS THE BLOCK, USING OCOLOR.; COOR ( I, 1` 23 ^^ , , 32 , 8 , 20,8,o# 1" COOR(I, 2` 39 ^^ , , 32 , 8 , 20,8,o# 1" FACE 16 ^^ , , 32 , 8 , 20,8,o# A" FOR J 18 ^^ , , 32 , 8 , 20,8,o# 1 TO 6 DO BEGIN COLOR (I, FACE` 35 ^^ , , 32 , 8 , 20,8,o# OCOLOR( I, FACE`" FACE 15 ^^ , , 32 , 8 , 20,8,o# SUCC%FACE)" END" I 11 ^^ , , 32 , 8 , 20,8,o# I- 1" END ELSE = THE FOLLOWING IS A LONG AND COMPLICATED WAY OF TURNING EACH BOX TO IT@S NEXT POSITION, AND UPDATE \COOR\, THE POSITION INDICATORS.; BEGIN FLAGL 23 ^^ , , 32 , 8 , 20,8,o# 1" X 9 ^^ , , 32 , 8 , 20,8,o# COOR(I,1`" Y 25 ^^ , , 32 , 8 , 20,8,o# COOR(I,2`" = THIS ROTATES THE CUBE ONCE ON ITS UP-DOWN AXIS.; TEMP1 18 ^^ , , 32 , 8 , 20,8,o# COLOR(I, A`" COLOR (I,A` 24 ^^ , , 32 , 8 , 20,8,o# COLOR(I, D`" COLOR (I,D` 24 ^^ , , 32 , 8 , 20,8,o# COLOR(I, C`" COLOR (I,C` 24 ^^ , , 32 , 8 , 20,8,o# COLOR(I, B`" COLOR ( I, B ` 26 ^^ , , 32 , 8 , 20,8,o# TEMP1" X 13 ^^ , , 32 , 8 , 20,8,o# X&1" = IF ALL 4 POSITIONS FOR ONE S-N AXIS POSITION HAVE BEEN TRIED,WE TWIST IT ALONG THAT AXIS, OR EXPOSE THE TWO REMAINING FACES.; IF X [ 5 THEN BEGIN CASE Y OF 1, 2, 3 17 ^^ , , 32 , 8 , 20,8,o BEGIN TEMP1 22 ^^ , , 32 , 8 , 20,8,o# COLOR(I, A`" TEMP2 22 ^^ , , 32 , 8 , 20,8,o# COLOR( I, C`" COLOR(I, A` 28 ^^ , , 32 , 8 , 20,8,o# COLOR(I,E`" COLOR(I, C` 28 ^^ , , 32 , 8 , 20,8,o# COLOR(I,F`" COLOR(I, F` 28 ^^ , , 32 , 8 , 20,8,o# TEMP1" COLOR(I, E` 28 ^^ , , 32 , 8 , 20,8,o# TEMP2" X 17 ^^ , , 32 , 8 , 20,8,o# 1" END" 4 11 ^^ , , 32 , 8 , 20,8,o BEGIN FOR Y 25 ^^ , , 32 , 8 , 20,8,o# 1 TO 4 DO FACE 16 ^^ , , 32 , 8 , 20,8,o# A" FOR J 18 ^^ , , 32 , 8 , 20,8,o# 1 TO 6 DO BEGIN COLOR (Y, FACE` 35 ^^ , , 32 , 8 , 20,8,o# OCOLOR( Y, FACE`" FACE 15 ^^ , , 32 , 8 , 20,8,o# SUCC%FACE)" END" TEMP1 18 ^^ , , 32 , 8 , 20,8,o# COLOR(I, B`" COLOR (I,B` 24 ^^ , , 32 , 8 , 20,8,o# COLOR(I, F`" COLOR (I,F` 24 ^^ , , 32 , 8 , 20,8,o# COLOR(I, D`" COLOR (I,D` 24 ^^ , , 32 , 8 , 20,8,o# COLOR(I, E`" COLOR(I, E` 24 ^^ , , 32 , 8 , 20,8,o# TEMP1" X 17 ^^ , , 32 , 8 , 20,8,o# 1" Y 15 ^^ , , 32 , 8 , 20,8,o# 4" END" 5 11 ^^ , , 32 , 8 , 20,8,o BEGIN TEMP1 18 ^^ , , 32 , 8 , 20,8,o# COLOR(I, B`" TEMP2 18 ^^ , , 32 , 8 , 20,8,o# COLOR(I, E`" COLOR (I,B` 24 ^^ , , 32 , 8 , 20,8,o# COLOR(I, D`" COLOR (I,E` 24 ^^ , , 32 , 8 , 20,8,o# COLOR(I, F`" COLOR ( I, D ` 26 ^^ , , 32 , 8 , 20,8,o# TEMP1" COLOR ( I, F ` 26 ^^ , , 32 , 8 , 20,8,o# TEMP2" X 11 ^^ , , 32 , 8 , 20,8,o# 1" END" END" Y 17 ^^ , , 32 , 8 , 20,8,o# Y&1" END" COOR(I,1` 18 ^^ , , 32 , 8 , 20,8,o#X" COOR(I,2` 32 ^^ , , 32 , 8 , 20,8,o# Y" END" UNTIL % %I#0) ! % FLAGL # 1 )) " IF I # 0 THEN BEGIN WRITE % \ FAILURE\, I, J, FLAGL)" OLOOP 31 ^^ , , 32 , 8 , 20,8,o# 1 " END" END" UNTIL OLOOP# 1" END . 1 ^^ p, , 112 , 0 , 70,0,o RWWGBR WGBGBR WGGRWB BRWGRR 1 ^^ ð, , 240 , 0 , F0,0,o