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