COSC3308                     PROGRAM3			Due: 10/9/2013
	                    (Fortran-1)
                            MAGIC SQUARE

SOME YEARS AGO, PARKER BROTHERS HAS BROUGHT OUT A GAME CALLED MERLIN WHICH IS REALLY SIX
GAMES IN ONE. ONE OF THE OPTIONS IS CALLED "MAGIC SQUARE'.  
 
OBJECTIVE:
TO FORM A SQUARE OF EIGHT LIGHTS BY LIGHTING BUTTONS 1,2,3,4,6,7,8,
AND 9. AT THE SAME TIME, YOU WILL HAVE TO TURN OFF BUTTON #5-THE
CENTER BUTTON.
  
LIGHT CHANGE PATTERNS:
  
	BUTTON		LIGHTS
	PUSHED		CHANGED
	  1		1,2,4,5
	  2		1,2,3
	  3		2,3,5,6
	  4		1,4,7
	  5		2,4,5,6,8
	  6		3,6,9
	  7		4,5,7,8
	  8		7,8,9
	  9		5,6,8,9

TASK:
YOU ARE TO DEVISE AND RUN A COMPUTER PROGRAM WHICH WILL PLAY AGAINST
MERLIN AND COMPLETE THE MAGIC SQUARE STARTING WITH ANY INITIAL INPUT
LIGHT POSITIONS.
 
MODULES OF YOUR PROGRAM:

1. MAIN PROGRAM
   A. READ THE INITIAL LIGHT POSITION INTO A 3X3 ARRAY "LIGHT".
   B. REPEAT UNTIL EOF.
        GET A NEW PAGE.
        PRINT OUT THE INITIAL INPUT LIGHT.
        COUNT THE NUMBER OF INCORRECT LIGHTS AND PRINT THIS COUNT.
        IF THIS COUNT IS ZERO THEN PRINT "INPUT CONFIGURATION IS PERFECT."
        ELSE
            DO 200 MANY=1,9 WHILE (YES .NE. 1)
               CALL COMBIN  ;* TO GET ALL COMBINATIONS OF "MANY" BUTTONS
               CALL TEST    ;* TO TEST TO SEE IF ANY ONE COMBINATION DOES
                            ;* THE JOB OF SWITCHING WRONG LIGHTS.
         200   CONTINUE  
	    IF YES=1 THEN PRINT ALL BUTTONS PRESSED AND THE RESULTING
	         	      LIGHT POSITIONS.
            ELSE PRINT "SORRY!!!NO COMBINATION OF BUTTONS DO!!!!"
            ENDIF
        ENDIF  ;* END-OF-IMPERFECT-INPUT-CONFIGURATION ************;
	READ THE NEXT INITIAL LIGHT POSITION.
     C. ON EOF, PRINT A FINISHING MESSAGE AND STOP.
2. SUBROUTINE TEST 
   GIVEN TABLE,MANY,LIGHT, AND COUNT, THIS WILL FIND 'SOLVE' AS THE COMBINATION
   NUMBER THAT SOLVES THE PROBLEM, AND SETS YES=1 IN THIS CASE.
   AND, IF A SOLUTION COMBINATION IS FOUND, IT CALCULATES ALL RESULTING
   LIGHT POSITIONS AND STORE THEM IN 'ANSWERS'.
   BUT, IT WILL SET YES=0 IF NO COMBINATION SOLVES THE PROBLEM.
3. SUBROUTINE COMBIN
   THIS SUBROUTINE, GIVEN MANY, WILL CALCULATE      
   (1) ALL COMBINATIONS OF THE 9 NUMBERS (I.E., 9
   BUTTONS) TAKEN 'MANY' BUTTONS AT A TIME AND STORE THEM IN
   'TABLE' AND
   (2) "COUNT" AS THE NUMBER OF COMBINATIONS CALCULATED.
  
 INPUTS:
 USE THE FOLLOWING THREE INPUT sets:
    1  1  1
    1  1  1
    1  1  1
  
  
    0  0  0
    0  0  0
    0  0  0
  
  
    1  0  1
    1  0  1
    1  0  1