FLORIDA HIGH SCHOOLS COMPUTING COMPETITION '90 1.1 Write a program to produce the following initials for NCNB National Bank: NN N CCCCC NN N BBBB N N N C N N N B B N N N C N N N BBBBB N N N C N N N B B N NN CCCCC N NN BBBB 1.2 NCNB programmers in Tampa use an IBM 3090 model 400 mainframe computer that has an MVS/XA (Multiple Virtual Storage/ Extended Architecture) operating system. The machine is partitioned into two logical processors: SYSTEM 1 is used for testing and all day-time batch jobs; SYSTEM 2 is used to support on-line programs and some night-time batch jobs. Write a program to display the processor name given the system #. Examples: INPUT: Enter #: 1 INPUT: Enter #: 2 OUTPUT: SYSTEM 1 OUTPUT: SYSTEM 2 1.3 With assets over 66 billion dollars in 1989, NCNB is the largest bank in the southeast United States. Let's assume that the Tampa Application Systems Center staffs 66 programmers. If there is a direct correlation between the number of programmers staffed in Tampa and the amount of money the bank has in assets, then display the total amount of assets NCNB will have if N more programmers are hired. Example: INPUT: Enter N: 4 OUTPUT: 70 BILLION DOLLARS 1.4 Write a program to help the post office determine the county in which a person lives, given his/her zip code. Use the following as data: HILLSBOROUGH - 33612 33613 33620 33510 PINELLAS - 33701 34685 34646 PASCO - 33525 34249 34690 Example: INPUT: Enter zip code: 33525 OUTPUT: PASCO 1.5 NCNB's dynamic chairman, Hugh McColl, resides at the national headquarters in Charlotte, North Carolina. His secretary would like to issue a statement to all the employees concerning McColl's financial goals. Write a program that accepts two numbers (MMM - amount in billions of dollars, and YYYY - year), and then produces a statement in the following form: HUGH MCCOLL WOULD LIKE NCNB TO GROW TO MMM BILLION DOLLARS IN ASSETS BY THE YEAR YYYY Example: INPUT: Enter MMM: 100 Enter YYYY: 1995 OUTPUT: HUGH MCCOLL WOULD LIKE NCNB TO GROW TO 100 BILLION DOLLARS IN ASSETS BY THE YEAR 1995 1.6 Vickie manages 7 people in the Trust Division at NCNB. Her associates pay an average of 50,000 coupons monthly. The work load is divided as evenly as possible among her associates so that no one person has more than one extra coupon to pay than another person. Write a program to calculate the MAXIMUM number of coupons that any one of N associates must pay if C coupons come in for payments. Examples: INPUT: Enter N associates: 7 Enter C coupons: 49000 OUTPUT: 7000 INPUT: Enter N associates: 7 Enter C coupons: 49002 OUTPUT: 7001 1.7 NCNB programmers code their programs primarily in COBOL: COmmon Business Oriented Language. Each program is required to have these four divisions (in order): IDENTIFICATION, ENVIRONMENT, DATA, and PROCEDURE. Write a program to display those divisions coming before and after a division given as input. Multiple divisions on a line are to be displayed in order and with 2 spaces in between. If none occur before/after entered division, then display NONE for that part. Examples: INPUT: Enter division: DATA OUTPUT: BEFORE = IDENTIFICATION ENVIRONMENT AFTER = PROCEDURE INPUT: Enter division: IDENTIFICATION OUTPUT: BEFORE = NONE AFTER = ENVIRONMENT DATA PROCEDURE 1.8 NCNB is the largest banking company in the South and the 7th largest in the nation. NCNB has statewide banks in four states: Florida, North Carolina, South Carolina, and Texas. It also has banks in Baltimore, Atlanta, and northern Virginia. For 1990, NCNB will recognize the following number of holidays in each of the states: 10-FL, 8-NC, 7-SC, 10-TX, 11-MD, 10-GA, 10-VA. Write a program to display the states that recognize at least N holidays, where N is input as a number between 5 and 11 inclusive. States must be displayed in the order given above with one space in between each state. Example: INPUT: Enter N: 10 OUTPUT: FL TX MD GA VA 1.9 Anno Domini is Latin for "in the year of our Lord" and is abbreviated as A.D. In 525 A.D., Pope John I asked the monk Dionysius Exiguus to begin a Christian system of dating events, starting with the year Dionysius believed Christ was born. The years before the birth of Christ are termed B.C., while the years after the birth of Christ are termed A.D. The following is the order of years: ... 2 B.C., 1 B.C., 1 A.D., 2 A.D., ... with Christ's birth being in the year 1 A.D. Today, we know that the monk was in error. Even though we continue to use his dating system, biblical scholars currently believe that Christ was born four years earlier than what the monk thought. Write a program that corrects modern dates to account for this change. Examples: INPUT: Enter date: 4 Enter A.D. or B.C.: B.C. OUTPUT: 1 A.D. INPUT: Enter date: 1 Enter A.D. or B.C.: A.D. OUTPUT: 5 A.D. INPUT: Enter date: 5 Enter A.D. or B.C.: B.C. OUTPUT: 1 B.C. 1.10 Write a program to display a word diamond for a 7 letter word. The following examples will illustrate the format of a word diamond. Examples: INPUT: Enter word: CONTEST INPUT: Enter word: PROBLEM OUTPUT: T OUTPUT: B NTE OBL ONTES ROBLE CONTEST PROBLEM ONTES ROBLE NTE OBL T B 2.1 Write a program to encode a phrase for the Security department. Each letter in the phrase is to be replaced by the letter that precedes it in the alphabet (B becomes A, C becomes B, ... Z becomes Y), except that the letter A becomes Z. All other characters remain the same. Example: INPUT: Enter phrase: THIS PERSON IS A THIEF OUTPUT: SGHR ODQRNM HR Z SGHDE 2.2 Write a program to determine if a given year is the BEGINNING/END of a DECADE/CENTURY/MILLENNIUM. Year 1 is the first year of our calendar, the year traditionally looked on as the year of Christ's birth. Year 1 began the first decade and the first century and the first millennium. The year 2000 will be the end of a decade and a century and a millennium. Input will be a year between 1 and 2000 inclusive. Output will be all valid possibilities of the form XXX OF YYY, where XXX is either BEGINNING or END, and YYY is either DECADE, CENTURY, or MILLENNIUM. For more than one line of output, the order must be DECADE, CENTURY, MILLENNIUM. Examples: INPUT: Enter year: 1900 OUTPUT: END OF DECADE END OF CENTURY INPUT: Enter year: 1991 OUTPUT: BEGINNING OF DECADE 2.3 Bob, Doug, Jackie, and Jose bowl in the NCNB bowling league. Given the scores of each of their 3 games, display each person's average and handicap. If a person has an average over 200, then his handicap is 0. Otherwise, the handicap is calculated by subtracting an average from 200 and multiplying the result by 90%. Both the average and handicap must be truncated to a whole number when displayed. Example: INPUT: Enter scores for Bob: 200, 190, 218 Enter scores for Doug: 195, 207, 168 Enter scores for Jackie: 109, 134, 127 Enter scores for Jose: 130, 140, 144 OUTPUT: BOB: AVERAGE = 202 HANDICAP = 0 DOUG: AVERAGE = 190 HANDICAP = 9 JACKIE: AVERAGE = 123 HANDICAP = 69 JOSE: AVERAGE = 138 HANDICAP = 55 2.4 Today we use a Gregorian Calendar, initially set up by Pope Gregory XIII in 1582. Because the previous Julian calendar was not an exact representation of a solar year, several days had accumulated since its institution. Therefore, Pope Gregory XIII decreed the elimination of 10 days from the year 1582. For many countries October 5, 1582 became October 15, 1582. However, different areas of the world did not adopt the calendar at the same time. Write a program to determine how many days to add to a Julian date to convert it to a Gregorian date. The following scale has been devised: Add 10 days to Julian dates from 10/5/1582 to 2/28/1700 Add 11 days to Julian dates from 3/1/1700 to 2/28/1800 Add 12 days to Julian dates from 3/1/1800 to 2/28/1900 Add 13 days to Julian dates from 3/1/1900 to 2/28/2100 Input will be a Julian date of the format MM/DD/YYYY and output will be of the format ADD NN DAYS. Examples: INPUT: Enter date: 09/02/1752 OUTPUT: ADD 11 DAYS INPUT: Enter date: 03/01/1801 OUTPUT: ADD 12 DAYS 2.5 Sorting is the arranging of elements of a list into order based on the value of a particular field within the elements. There are several algorithms to accomplish the task of sorting including: bubble sort, shell sort, and quick sort. Each sorting algorithm's efficiency depends upon the number of elements to be sorted and the particular order in which they are originally given. The average number of comparisons needed to sort a list of N elements is given as: N * (N-1) / 2 for BUBBLE SORT N * ((Log base 2 of N) squared) for SHELL SORT N * (Log base 2 of N) for QUICK SORT Assuming that the efficiency depends only on the number of elements in the list, N, determine the efficiency order of the different sorting algorithms and print them from most efficient to least efficient. N will be greater than 2. Example: INPUT: Enter N: 128 OUTPUT: QUICK SORT SHELL SORT BUBBLE SORT 2.6 During the summer and fall, NCNB has a golf league for employees. Write a program for a golfer to determine the status for each of the 9 holes, given the scores on each hole as input and using the pars listed below. The par is the score standard for each hole on a golf course. Also display the total number of strokes the golfer takes and the total par for the 9 holes. If a golfer shoots the standard score for a hole, the status is PAR. If on a hole a golfer shoots 1 score below the par, the status is BIRDIE. If the score is 2 below the par, the status is EAGLE. A score of 3 below the par is called a DOUBLE EAGLE. For scores 1 and 2 above par, the status is BOGEY and DOUBLE BOGEY respectively. Use the following pars for the holes: HOLE: 1 2 3 4 5 6 7 8 9 ------------------------------- PAR: 4 3 4 5 4 3 5 4 4 Example: INPUT: Enter score for hole 1: 3 Enter score for hole 2: 3 Enter score for hole 3: 5 Enter score for hole 4: 7 Enter score for hole 5: 6 Enter score for hole 6: 1 Enter score for hole 7: 2 Enter score for hole 8: 3 Enter score for hole 9: 4 OUTPUT: HOLE PAR SCORE STATUS ---- --- ----- ------ 1 4 3 BIRDIE 2 3 3 PAR 3 4 5 BOGEY 4 5 7 DOUBLE BOGEY 5 4 6 DOUBLE BOGEY 6 3 1 EAGLE 7 5 2 DOUBLE EAGLE 8 4 3 BIRDIE 9 4 4 PAR --- ----- 36 34 2.7 In 45 B.C. Julius Caesar instituted the use of a calendar. The Julian calendar consists of a perpetual cycle of three years of 365 days followed by one year of 366 days. However, the exact solar year consists of 365 days, 5 hours, 48 minutes, 47.8 seconds. Thus, at the end of 1 Julian year, the Julian calendar is ahead of a solar calendar that will complete its year in another 5 hours 48 minutes and 47.8 seconds. Write a program to determine how many days, hours, minutes, and seconds the Julian calendar is behind/ahead of an imaginary calendar that is based on exact solar years. Assume that both calendars start at the same time and a comparison is done at the end of N Julian years, where N is input as a natural number less than 2000. Output must have 1 space between the number and its unit; 2 spaces between the unit and the next number. Seconds are displayed using the form ##.#. Examples: INPUT: Enter N: 1 OUTPUT: 0 DAYS 5 HOURS 48 MIN 47.8 SEC AHEAD INPUT: Enter N: 2 OUTPUT: 0 DAYS 11 HOURS 37 MIN 35.6 SEC AHEAD INPUT: Enter N: 3 OUTPUT: 0 DAYS 17 HOURS 26 MIN 23.4 SEC AHEAD INPUT: Enter N: 4 OUTPUT: 0 DAYS 0 HOURS 44 MIN 48.8 SEC BEHIND INPUT: Enter N: 5 OUTPUT: 0 DAYS 5 HOURS 3 MIN 59.0 SEC AHEAD 2.8 In June 1989, Barb and Carolyn founded a suggestion committee for the NCNB Systems and Programming Division in Tampa. In August Joe was placed on the suggestion committee. In September Carolyn resigned and Doug took her place. The committee declared that a new person from a waiting list will replace a committee member after he/she has served for six months. With the following waiting list, write a program to display the 3 committee members for every month that someone is replaced. The names on a line must follow the logical order started in the example. Input will be the last month and year that the suggestion committee meets before it disassembles. The date input will not be later than 5, 1992. Waiting list: JACKIE, TOM, LOVETTA, GREG, TONY, AL, KAREN, JAN, NORM, TRUDY, THERESA, ALICE, DAVE, JIM, STEVE Example: INPUT: Enter month, year: 6, 1990 OUTPUT: 9/1989 - BARB JOE DOUG 12/1989 - JACKIE JOE DOUG 2/1990 - JACKIE TOM DOUG 3/1990 - JACKIE TOM LOVETTA 6/1990 - GREG TOM LOVETTA 2.9 Write a program to graph both the sine function and the cosine function using asterisks. First, the program is to clear the screen. With dashes {-} for the x-axis and exclamation marks {!} for the y-axis, display the axes extending across the entire screen with the center (0,0) in the middle of the screen, represented by a {+}. With asterisks {*}, graph the sine function varying the x-coordinate from -PI to PI, where (-PI,0) is the left most {-} and (PI,0) is the right most {-}. The top most {!} is (0,1) and the bottom most {!} is (0,-1). Allow the user to press any key to clear the screen and display the axes again. This time graph the cosine function with the same coordinate dimensions. Allow the user to press any key to clear the screen. The graphs will look similar to the following. Example: OUTPUT: (Screen clears and the axes is drawn before the graph is drawn from left to right. Graph will look similar to below, but it extends to the dimensions of the terminal.) ! ****** ! *** *** ! ** ** ! ** ** ! ** ** !** ** *------------------*------------------* ** **! ** ** ! ** ** ! ** ** ! *** *** ! ****** ! INPUT: (Press any key) OUTPUT: (Screen clears and the axes is drawn before the graph is drawn from left to right- similar to below.) ***** ** ! ** ** ! ** ** ! ** ** ! ** ** ! ** ----------**-------+-------**---------- ** ! ** ** ! ** ** ! ** *** ! *** *** ! *** **** ! **** INPUT: (Press any key) OUTPUT: (Screen clears) 2.10 A new employee of the NCNB computer programming department desires training. Write a program to produce the following NCNB menu of currently available in-house computer courses. Estimate the TOTAL number of hours he/she will spend on training given the courses that he/she has selected. Upon completion of course selection, 000-000 is entered. The screen is then cleared, and the course names chosen are displayed again in the order that they were selected. Estimated hours for each course selected must appear to the right of the course name: The heading "EST. HOURS" starts 26 columns after the first column of the "COURSE NAME," as shown in the menu selection. Also, the TOTAL estimated hours must show underneath all the individual course hours in the form: TOTAL = ##.# - ## HOURS. Example: OUTPUT: NCNB IN-HOUSE TRAINING LIST COURSE # COURSE NAME EST. HOURS -------- ----------- ---------- 187-11X ISPF/PDS FUNDAMENTALS 6.5 - 8 187-15X ISPF/PDS FOR PROGRAMMERS 4.5 - 6 220-AXX JCL FUNDAMENTALS 15 - 20 200-AXX VSAM CONCEPTS 4 - 7 123-2XX MVS/SP/XA VSAM 7 - 11 130-11X CICS/VS SKILLS I 6 - 8 130-15X CICS/VS SKILLS II 4 - 6 INPUT: Enter course # (or 000-000 to end): 220-AXX Enter course # (or 000-000 to end): 130-11X Enter course # (or 000-000 to end): 187-11X Enter course # (or 000-000 to end): 000-000 OUTPUT: (Screen is cleared) COURSE NAME EST. HOURS ----------- ---------- JCL FUNDAMENTALS 15 - 20 CICS/VS SKILLS I 6 - 8 ISPF/PDS FUNDAMENTALS 6.5 - 8 ---------- TOTAL = 27.5 - 36 HOURS 3.1 A company would like to use an acronym as a phone number that is easy for the public to remember. They would like a word that can be used for the last several digits of their number, where each letter corresponds to a particular digit. Each possible word will be 4 or 5 letters long. Write a program to display all possible acronym phone numbers (in the order listed below from left to right, top to bottom) for an input number of the format XXX-XXXX. Assume that at least one word will satisfy the requirements given the following word list options: AGENT SOAP MONEY JEWEL BALL LOANS CARE SAVE CALL PAVE KEEP KINGS KNIFE KNOCK JOINT JUICE LOBBY RATE Use the following letters to correspond to the digits 2 to 9: A B C D E F G H I J K L M N O P R S T U V W X Y 2 3 4 5 6 7 8 9 Examples: INPUT: Enter phone #: 555-3935 OUTPUT: 55J-EWEL INPUT: Enter phone #: 555-2255 OUTPUT: 555-BALL 555-CALL 3.2 Write a program to select words given a string of letters with a wildcard, {*}. The following words make up the word list: COMPUTE, COMPUTER, COMPUTERS, COMPORT, COMPUTES, COMPUTED, ATTRACTIVE, ABRASIVE, ADAPTIVE, ACCEPTIVE, AERATING, CONTESTED, CONTESTER, CORONETS, CONTESTS, CONTESTERS, COUNTESS, CREATIVE, CREATE, CREATURE, CREATION, EVERYBODY, EVERYONE, EMPTY, ELECTION The wildcard could come before, after, or between the letters of the string. The program must display all words in the list (in order from left to right, top to bottom) separated by 2 spaces that are of the form input, where the wildcard could represent 0 to 10 letters. The words may be in any order. If no words are found then display the message NO WORDS FOUND. The program is to continue to display words and to accept as input a string with a wildcard until a string is entered without a wildcard. Example: INPUT: Enter string: CREAT* OUTPUT: CREATIVE CREATE CREATURE CREATION INPUT: Enter string: *TION INPUT: Enter string: *ATER OUTPUT: CREATION ELECTION OUTPUT: NO WORDS FOUND INPUT: Enter string: E*Y INPUT: NO OUTPUT: EVERYBODY EMPTY OUTPUT: (Program terminates) 3.3 Three local cross country teams compete in a double dual race. Each team consists of seven runners, but only the first five finishers of a team contribute to that team's score. As the runners cross the finish line, gasping for breath, the judge writes the INITIAL of the runner's team name and the NUMBER indicating the runner's finishing position, e.g. 1 for 1st, 2 for 2nd and so on. To find the score for teams A and B and to decide which of the two wins, the scorekeeper temporarily eliminates all of C's positions, and then repositions the runners from A and B into places 1 through 14. The team's score consists of the sum of the places of their first five runners. The lower team score wins. If there is a tie then the team whose sixth runner crossed the finish line first is the winner. Write a program that computes the score for each pair of three teams and determines the winner of each pair (pairs may be displayed in any order). The program must allow the user to assign all 21 runners' team INITIAL to finishing places. Team initials can be any letter in the alphabet. Example: INPUT: Place 1: A | Example of Place 2: B | repositioning Place 3: A | teams A and B: Place 4: B | Place 5: A | 1: A Place 6: B | 2: B Place 7: C | 3: A Place 8: C | 4: B Place 9: C | 5: A Place 10: C | 6: B Place 11: B | 7: B Place 12: A | 8: A Place 13: C | 9: B Place 14: B | 10: B Place 15: C | 11: A Place 16: B | 12: A Place 17: A | 13: B Place 18: A | 14: A Place 19: C Place 20: B Place 21: A OUTPUT: TEAM A: 28 POINTS TEAM B: 28 POINTS TEAM B WINS! TEAM A: 25 POINTS TEAM C: 31 POINTS TEAM A WINS! TEAM B: 24 POINTS TEAM C: 31 POINTS TEAM B WINS! 3.4 Within NCNB's Application Systems Division, there are many programming teams consisting of 2 to 8 programmers and 1 team leader. Suppose that NORM is a team leader in charge of 3 programmers: AL, DOUG, and JAN. Norm has been given 30 programs (numbered 1 through 30) to distribute amongst his employees. Al is given all programs divisible by X, and Doug is given all programs divisible by Y. Jan is given all programs divisible by Z, and Norm takes the rest of the programs that were not assigned to anyone and will work on some himself or he will redistribute some later. Given X, Y, Z as different input numbers between 2 and 10 inclusive, write a program to display those program numbers shared by all 3 of the programmers, those shared between only 2, and those assigned solely to 1 person. If no programs are assigned exclusively to one particular group, then display NONE instead of program numbers. The output must be in the same format as shown: eight lines, with numbers in increasing order. Examples: INPUT: Enter X, Y, Z: 2, 3, 5 OUTPUT: AL, DOUG, AND JAN = 30 AL AND DOUG = 6 12 18 24 AL AND JAN = 10 20 DOUG AND JAN = 15 AL = 2 4 8 14 16 22 26 28 DOUG = 3 9 21 27 JAN = 5 25 NORM = 1 7 11 13 17 19 23 29 INPUT: Enter X, Y, Z: 2, 6, 9 OUTPUT: AL, DOUG, AND JAN = 18 AL AND DOUG = 6 12 24 30 AL AND JAN = NONE DOUG AND JAN = NONE AL = 2 4 8 10 14 16 20 22 26 28 DOUG = NONE JAN = 9 27 NORM = 1 3 5 7 11 13 15 17 19 21 23 25 29 3.5 The numbers 1 through 8 and a blank are randomly placed in a 3 X 3 array on the screen. For example: 5 8 3 4 1 6 2 7 Write a program so that when a key from 1 - 8 is pressed, the corresponding number on the screen slides horizontally or vertically to the adjacent blank location. If a key is pressed that is not horizontally or vertically adjacent to the blank, the computer does nothing. (For example: in the above diagram, only the 3, 1, and 7 can be moved.) The user can repeat this process of sliding numbers until the digit 9 is pressed, which causes the program to terminate.Example: OUTPUT: 4 3 1 2 8 5 7 6 INPUT: (Press 2) OUTPUT: 4 3 1 8 5 2 7 6 INPUT: (Press 8) OUTPUT: 4 3 1 8 5 2 7 6 INPUT: (Press 6) OUTPUT: (No change) INPUT: (Press 9) OUTPUT: (Program terminates) 3.6 Write a program to simulate a chess game between two players. Display a chess board with the white chess pieces at the bottom of the board (designated by a leading W), and the black pieces at the top of the board (designated by a leading B). The board is set up according to the international chess notation: a letter of the alphabet designates vertical columns, and a number designates horizontal rows. The board must be displayed as below. The computer allows WHITE to move first, and then allows BLACK to move. The computer continues to alternate moves until a king is captured. The White king is designated as WK and the black king is designated as BK. The user enters a valid move in the format L#-L# where L is one of the letters (A, B, C, D, E, F, G, H) and # is one of the digits (1, 2, 3, 4, 5, 6, 7, 8). The piece occupying the coordinate of the first L# is moved to the coordinate of the second L#. If a piece is moved onto the opponent's square, the opponent's piece is removed. If a piece takes over an opponent's king, then print CHECK MATE, CCCCC WON (where CCCCC is either WHITE or BLACK). Only valid moves will be entered, and neither castling nor the "en passant" move will be done. No "check" warning is given in this game. Example: OUTPUT: BR1 BK1 BB1 BQ BK BB2 BK2 BR2 ! 8 BP1 BP2 BP3 BP4 BP5 BP6 BP7 BP8 ! 7 ! 6 ! 5 ! 4 ! 3 WP1 WP2 WP3 WP4 WP5 WP6 WP7 WP8 ! 2 WR1 WK1 WB1 WQ WK WB2 WK2 WR2 ! 1 ---------------------------------- A B C D E F G H INPUT: Enter white move: E2-E4 OUTPUT: BR1 BK1 BB1 BQ BK BB2 BK2 BR2 ! 8 BP1 BP2 BP3 BP4 BP5 BP6 BP7 BP8 ! 7 ! 6 ! 5 WP5 ! 4 ! 3 WP1 WP2 WP3 WP4 WP6 WP7 WP8 ! 2 WR1 WK1 WB1 WQ WK WB2 WK2 WR2 ! 1 ---------------------------------- A B C D E F G H INPUT: Enter black move: F7-F6 OUTPUT: (continued on next page) (output continued) OUTPUT: BR1 BK1 BB1 BQ BK BB2 BK2 BR2 ! 8 BP1 BP2 BP3 BP4 BP5 BP7 BP8 ! 7 BP6 ! 6 ! 5 WP5 ! 4 ! 3 WP1 WP2 WP3 WP4 WP6 WP7 WP8 ! 2 WR1 WK1 WB1 WQ WK WB2 WK2 WR2 ! 1 ---------------------------------- A B C D E F G H INPUT: Enter white move: D1-H5 OUTPUT: BR1 BK1 BB1 BQ BK BB2 BK2 BR2 ! 8 BP1 BP2 BP3 BP4 BP5 BP7 BP8 ! 7 BP6 ! 6 WQ ! 5 WP5 ! 4 ! 3 WP1 WP2 WP3 WP4 WP6 WP7 WP8 ! 2 WR1 WK1 WB1 WK WB2 WK2 WR2 ! 1 ---------------------------------- A B C D E F G H INPUT: Enter black move: B8-C6 OUTPUT: BR1 BB1 BQ BK BB2 BK2 BR2 ! 8 BP1 BP2 BP3 BP4 BP5 BP7 BP8 ! 7 BK1 BP6 ! 6 WQ ! 5 WP5 ! 4 ! 3 WP1 WP2 WP3 WP4 WP6 WP7 WP8 ! 2 WR1 WK1 WB1 WK WB2 WK2 WR2 ! 1 ---------------------------------- A B C D E F G H INPUT: Enter white move: H5-E8 OUTPUT: BR1 BB1 BQ WQ BB2 BK2 BR2 ! 8 BP1 BP2 BP3 BP4 BP5 BP7 BP8 ! 7 BK1 BP6 ! 6 ! 5 WP5 ! 4 ! 3 WP1 WP2 WP3 WP4 WP6 WP7 WP8 ! 2 WR1 WK1 WB1 WK WB2 WK2 WR2 ! 1 ---------------------------------- A B C D E F G H CHECK MATE, WHITE WON 3.7 Write a program to determine the date of Easter and the date of Lent for a given year between 1970 and 2009 inclusive. Easter falls on the first Sunday following the arbitrary Paschal Full Moon, which does not necessarily coincide with a real or astronomical full moon. The Paschal Full Moon occurs on one of the following 19 dates corresponding to a key. The key is the remainder obtained by dividing the year by 19. Key Date Key Date --- ---- --- ---- 0 April 14 10 March 25 1 April 3 11 April 13 2 March 23 12 April 2 3 April 11 13 March 22 4 March 31 14 April 10 5 April 18 15 March 30 6 April 8 16 April 17 7 March 28 17 April 7 8 April 16 18 March 27 9 April 5 Therefore, the key for the year 1990 is 14 (because 1990 / 19 = 104 remainder 14), and the Paschal Full Moon occurs on April 10. Since April 10, 1990 is a Tuesday, Easter Sunday is April 15. Note, if the Paschal Full Moon falls on a Sunday, Easter is the following Sunday. The earliest Easter can fall is March 23, and the latest is April 25. Lent begins on Ash Wednesday which comes 40 days before Easter, excluding Sundays (46 days including Sundays). Note, January 1, 1970 is a Thursday, and every year between 1970 and 2009 that is divisible by 4 is a leap year. Examples: INPUT: Enter year: 1970 OUTPUT: EASTER IS ON MARCH 29 LENT IS ON FEBRUARY 11 INPUT: Enter year: 1996 OUTPUT: EASTER IS ON APRIL 7 LENT IS ON FEBRUARY 21 INPUT: Enter year: 2000 OUTPUT: EASTER IS ON APRIL 23 LENT IS ON MARCH 8 3.8 Write a program to keep score for a bowler. Input will be 10 frames of numbers. Output will be the scoring of each frame, as shown below in the example. The standard method of scoring will be used in this program. In each frame the bowler has at most two chances to roll down all 10 pins. If the bowler does not knock down all the pins in that frame, then his score is added to the number of pins that he previously knocked down. (Note: the bowler's score starts out as 0). For the first 9 frames, if the bowler knocks all 10 pins down on the 2nd roll (indicated by a /) then his score for that frame is his previous score + 10 + the number of pins that he knocks down on his next roll in the next frame. If he rolls all the pins down on his 1st ball of a frame (indicated by an X) then he gets 10 + the total number of pins that he knocks down on the next 2 rolls. A new frame is started after 2 balls are rolled or all ten pins are knocked down on the 1st ball. In the 10th frame, the bowler is allowed at most three rolls, depending upon his first and second rolls. If he gets all the pins down on the 1st roll then his score will be his previous score plus 10 plus the number of pins he knocks down on his next 2 rolls. If he knocks all 10 pins down after 2 rolls, his score will be his previous score + 10 + the number of pins he knocks down on his next roll. Frame inputs are right justified and the score is left justified in each frame. Example: INPUT: Enter frame 1: 7/ Enter frame 2: X Enter frame 3: 62 Enter frame 4: X Enter frame 5: X Enter frame 6: 8/ Enter frame 7: 63 Enter frame 8: X Enter frame 9: X Enter frame 10: X9- (Note: 62 indicates that 6 pins were knocked down on 1st roll and 2 pins were knocked down on 2nd roll; / indicates all remaining pins knocked down on 2nd roll; X indicates 10 pins knocked down on the 1st roll; - indicates 0 pins knocked down.) OUTPUT: -1- -2- -3- -4- -5- -6- -7- -8- -9- -10- ---!---!---!---!---!---!---!---!---!---! 7/! X! 62! X! X! 8/! 63! X! X!X9-! 20 !38 !46 !74 !94 !110!119!149!178!197! ---------------------------------------- 3.9 Write a program to solve a system of N equations with N unknowns. The program will first accept a value for N between 2 and 4 inclusive. For each equation the program should accept the values for the N coefficients followed by the constant. Each given system of equations will have one unique solution whose values will be integers. A possible algorithm to be used to solve an NxN system of equations is shown to the right of the example input/output. Examples: INPUT: Enter N: 3 | 2x + 4y + 6z = 4 (Divide by 2) Enter coefficients for row1 | 2x + y + z = 3 Co1: 2 | -x + 2y + z = 2 Co2: 4 | Co3: 6 | 1 2 3 2 Enter constant: 4 | 2 1 1 3 (Subtract 2*Row1) Enter coefficients for row2 | -1 2 1 2 Co1: 2 | Co2: 1 | 1 2 3 2 Co3: 1 | 0 -3 -5 -1 Enter constant: 3 | -1 2 1 2 (Subtract -1*Row1) Enter coefficients for row3 | Co1: -1 | 1 2 3 2 Co2: 2 | 0 -3 -5 -1 (Divide by -3) Co3: 1 | 0 4 4 4 Enter constant: 2 | | 1 2 3 2 OUTPUT: (1, 2, -1) | 0 1 5/3 1/3 | 0 4 4 4 (Subtract 4*Row2) | | 1 2 3 2 INPUT: Enter N: 2 | 0 1 5/3 1/3 Enter coefficients for row1 | 0 0 -8/3 8/3 (Divide by -8/3) Co1: 1 | Co2: 1 | 1 2 3 2 Enter constant: 1 | 0 1 5/3 1/3 (Subtract 5/3*Row3) Enter coefficients for row2 | 0 0 1 -1 Co1: 2 | Co2: 3 | 1 2 3 2 (Subtract 3*Row3) Enter constant: 6 | 0 1 0 2 | 0 0 1 -1 OUTPUT: (-3, 4) | | 1 2 0 5 (Subtract 2*Row2) | 0 1 0 2 | 0 0 1 -1 | | 1 0 0 1 | 0 1 0 2 | 0 0 1 -1 3.10 Write a program to solve cryptorithms (a puzzle in which the letters of the alphabet are written in a computational format). The object is to determine which digit corresponds to each letter in the puzzle to satisfy the computation. Input will be two 2-letter addends and a 3-letter sum. The program will generate a numeric solution for each of the letters used. The judging criteria will be such that there will always be at least one solution. Only the letters A, B, C, D, and E may be used in the input, and the leading letter may not be 0. Example: INPUT: Enter first addend: AB Enter second addend: BC Enter sum: DDB OUTPUT: (Only one of the following solutions must be shown) A = 2 3 4 5 6 7 8 B = 9 or 8 or 7 or 6 or 5 or 4 or 3 C = 0 0 0 0 0 0 0 D = 1 1 1 1 1 1 1