FLORIDA HIGH SCHOOLS COMPUTING COMPETITION '87 1.1 Write a program to accept a number and print out the value of its sign: POSITIVE, NEGATIVE, or ZERO. INPUT: Enter number: -4.5 OUTPUT: NEGATIVE 1.2 Write a program that accepts an integer, n, as input and then finds and prints the sum of the numbers n, n+1, n+2, ..., n+20. Example: INPUT: Enter n: 3 OUTPUT: SUM = 273 1.3 Write a program to print PROBLEM THREE diagonally down and across the screen. The output must be centered on the screen, both from top to bottom and left to right. Example: P R O B L E M T H R E E 1.4 A standard six sided die has a 1 on the opposite side of the 6, a 3 on the opposite side of the 4, and a 5 on the opposite side of the 2. Write a program that accepts input for the numbers on the top, front, and right sides of the die and then prints the numbers on each of the six sides of the die. Example: INPUT: Enter number on top: 1 Enter number on front: 3 Enter number on right: 5 OUTPUT: TOP= 1 FRONT= 3 RIGHT= 5 BOTTOM= 6 BACK= 4 LEFT= 2 1.5 Write a program to fill the entire screen with random characters, then pause. Upon pressing any key, the screen will clear. 1.6 Write a program to accept two sets of two integers which correspond to the upper left and lower right hand coordinates of a rectangle on the screen. Fill this imaginary rectangle with periods. Everything else on your screen should be blank. In the example below, the first period is to appear in the fourth position of line four on the screen. Example: INPUT: Enter coordinates: 4,4, 7,12 OUTPUT: ......... ......... ......... ......... 1.7 An easy and efficient method of generating random numbers is to start with an initial value, the seed, multiply by 421, add 1 to the product, then divide by 100 and use the remainder as the random number, and as the new seed. Write a program which accepts a value for the seed and prints out the next 10 random numbers. Example: INPUT: Enter seed: 3 OUTPUT: 64 45 46 67 8 69 50 51 72 13 1.8 Write a program to determine the mass of a big fish tank that is filled to the top with water if the tank (without water) has a mass of K kilograms and has dimensions of L feet by W feet by H feet. K,L,W,H will be input. Output will be the mass in the form #####.## KILOGRAMS. Note: 1 inch = 2.54 centimeters; 1 cubic cm. of water = 1 gram Example: INPUT: Enter K, L, W, H: 32, 5, 4, 2 OUTPUT: 1164.67 KILOGRAMS 1.9 Write a program to clear the screen and display the design shown below, exactly. It consists of 21 rows made up of the letters in the alphabet. There are 31 letters in every odd numbered row. In every even numbered row there are 11 columns of letters separated by 2 spaces. Example: OUTPUT: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B B B B B B B B B B B CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC D D D D D D D D D D D EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE F F F F F F F F F F F GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG H H H H H H H H H H H IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII J J J J J J J J J J J KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK L L L L L L L L L L L MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM N N N N N N N N N N N OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO P P P P P P P P P P P QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ R R R R R R R R R R R SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS T T T T T T T T T T T UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 1.10 Write a program to print the number of hours and minutes (clearly labeled) a reader takes to read a given book if he reads at a given rate (minutes/page). Both the book title and the rate will be input. The minutes displayed must be between 0 and 59, inclusive. The program will use the contents of the four DATA lines shown below in some manner. Each DATA line consists of the title of a book and the number of pages in the book, as shown below. DATA THE HISTORY OF THE COMPUTER, 400 DATA THE RED DOG RUNS, 200 DATA EATING APPLE PIE, 150 DATA THE ART OF WINNING, 250 Example: INPUT: Enter book title: EATING APPLE PIE Enter rate (minutes/page): 1 OUTPUT: 2 HOURS 30 MINUTES 2.1 Write a program to accept a string of up to ten letters, and an integer, N. First print the string. Then on the next line, print the string rotated to the left N times. When a character "falls off" the left end, it must be wrapped onto the right end. Example: INPUT: Enter string: ABCDEFG Enter N: 3 OUTPUT: ABCDEFG DEFGABC 2.2 A computer salesperson buys stock in large quantities. The salesperson bought a certain amount of cartons of each of 3 types of diskettes. Each carton contains 100 diskettes. Vers cost $225 per carton, Maxs cost $297 per carton, and Wabs cost only $120 per carton. If a total of 100 cartons were bought, how many cartons of each type makes the total bill come to $23,607? Display output in the form below. Example: OUTPUT: ## VERS ## MAX ## WABS 2.3 Using the random-number generator, write a program that accepts a list of at most 15 unique positive integers (ending list with a -1) and outputs a random set of five of those integers each time a key is pressed. The random list should differ each time the key is pressed, and should contain no duplicates. Example: INPUT: Enter list item: 3 Enter list item: 4 Enter list item: 76 Enter list item: 31 Enter list item: 47 Enter list item: 88 Enter list item: 1 Enter list item: 5 Enter list item: 901 Enter list item: 23 Enter list item: 7 Enter list item: -1 OUTPUT: (Possible output, but will differ) 901 3 76 88 23 PRESS ANY KEY INPUT: (Press any key) OUTPUT: 47 1 31 5 76 2.4 Write a program to produce a complete listing of all the ways a given positive integer less than 20 can be partitioned as a sum of equal numbers. The listing must be in pyramid form as shown below with only the + between the addends (no spaces). Example: INPUT: Enter a number less than 20: 12 OUTPUT: 12 6+6 4+4+4 3+3+3+3 2+2+2+2+2+2 1+1+1+1+1+1+1+1+1+1+1+1 2.5 Write a program to calculate the fractional value of three letter words. The value of a letter in the alphabet (A...Z) is defined as the position of that letter in the alphabet. Thus A=1, B=2, C=3 ... Z=26. The fractional value is the sum of the reciprocals of the value of each letter in that word. This value must be printed out as a simplified fraction. In the example below, 1/3 + 1/1 + 1/2 = 11/6. Example: INPUT: Enter word: CAB OUTPUT: 11/6 2.6 Write a program that accepts a set of at most 7 integers, an integer N, and another integer S, and determines if there is a subset of N elements from the set that sums to no more than S: output "YES" or "NO". Your output must include the elements in one of the subsets, if one exists, and display that set in ascending order. Indicate the end of your input set with a -1. Example: INPUT: Enter set item: 6 Enter set item: 8 Enter set item: 2 Enter set item: 14 Enter set item: 3 Enter set item: -1 Enter N: 3 Enter S: 15 OUTPUT: YES 2 3 6 (other subsets may be displayed instead, e.g. 2,3,8) 2.7 Write a program that recognizes strings of the following pattern type: an "A" followed by zero or more "BA"s followed by one or more "A"s. Some legal patterns are AA, ABAA, ABABAAAAA, and so on. Illegal patterns include AABAA, ABABABA. Example: INPUT: Enter pattern: BABAAA OUTPUT: ILLEGAL PATTERN INPUT: Enter pattern: AAA OUTPUT: LEGAL PATTERN 2.8 Write an efficient program to find and print all integers between M and N inclusive that have exactly F distinct positive factors. M,N, and F will be inputted with M greater than 1, M less than N, N less than 1000, and F greater than 1. Example: INPUT: Enter M, N, F: 2, 10, 2 OUTPUT: 2 3 5 7 2.9 Write a program to alphabetize 5 words according to the following rules: The word containing the lowest ranking letter (considering every letter in the word) is first, then the word containing the second lowest ranking letter is second, and so on. If two words have the same lowest ranking letter, then compare each word’s next lowest ranking letter, and so on. If during the process a word runs out of letters, then it is the next word printed. For example: TAP comes before PAY because... Both have the same lowest ranking letter, A. Both have the same second lowest ranking letter, P. But, TAP's T comes before PAY's Y. Example: INPUT: Enter word 1: FLORIDA Enter word 2: HIGH Enter word 3: SCHOOLS Enter word 4: COMPUTING Enter word 5: COMPETITION OUTPUT: FLORIDA COMPETITION COMPUTING SCHOOLS HIGH 2.10 Write a program to produce a super-duper input routine with 4 types of input. The program should accept the ROW position and COLumn position of the first character to be input. The program should also accept a number for the MAXimum number of characters allowed for input. Also, accept the TYPE of input (1-4). The input routine must not allow more than MAX characters to be entered. By pressing a BACKSPACE key the program will remove the last character printed and wait for a new character to replace it. The program must not allow the user to backspace past the original ROW and COLumn positions entered. According to the TYPE of entry (1,2,3, or 4), the following restrictions are placed upon the characters being entered: TYPE 1: Only Alphabetic letters and a space allowed. TYPE 2: Only Numeric digits and decimal points allowed. TYPE 3: Only Numeric digits and dashes [ - ] allowed in the following date format POSITIONS: MM-DD-YY. MAX will be entered as 8 for this entry. TYPE 4: All characters are allowable. When the RETURN key is pressed, the program will display the entry two rows directly beneath the characters that were typed on the screen. Example: INPUT: Enter ROW, COL: 5, 5 Enter MAX: 8 Enter TYPE: 1 (The program should accept input at ROW 5, COLumn 5) INPUT: ABCD F2 OUTPUT: ABCD F (The program must not display the "2") INPUT: GHI OUTPUT: ABCD FGH INPUT: (Press the BACKSPACE key 6 times.) OUTPUT: AB INPUT: - (dash) OUTPUT: AB INPUT: (RETURN key) OUTPUT: AB (will be printed two rows beneath the typed AB). 3.1 The following problem is part of an algorithm to correct misspellings. Two words are said to be close if they are the same or one word can be obtained from the other by a single transformation of the following types: One letter is changed One letter is deleted One letter is added Two adjacent letters are transposed. Write a program to accept two words and determine if they are close. Examples: INPUT: Enter word 1: THEIR Enter word 2: THIER OUTPUT: CLOSE INPUT: Enter word 1: THERE Enter word 2: THEIR OUTPUT: NOT CLOSE 3.2 Write a program to evaluate an NxN determinant where N is input as 2, 3, or 4. In order to evaluate a 4x4 determinant, the program must choose a row or column of 4 numbers and add all the products of the 4 numbers with their corresponding evaluated 3x3 minor in the following way: If the numbers' row and column positions are both odd or both even then the program adds the product of that number with its 3x3 minor; otherwise, the program subtracts the product of that number with its 3x3 minor. For example, choosing the bottom row of numbers for the following 4x4 determinant: INPUT: Enter dimension N: 4 INPUT: (enter the NxN numbers one at a time, going from left to right, top row to bottom row) |1 2 3 4| |5 6 7 8| |9 0 1 2| |3 4 5 6| OUTPUT: 0 (because...) |2 3 4| |1 3 4| |1 2 4| |1 2 3| - 3 x |6 7 8| + 4 x |5 7 8| - 5 x |5 6 8| + 6 x |5 6 7| |0 1 2| |9 1 2| |9 0 2| |9 0 1| = -3 x (2x7x2 + 3x8x0 + 4x6x1 - 0x7x4 - 1x8x2 - 2x6x3) +4 x (1x7x2 + 3x8x9 + 4x5x1 - 9x7x4 - 1x8x1 - 2x5x3) -5 x (1x6x2 + 2x8x9 + 4x5x0 - 9x6x4 - 0x8x1 - 2x5x2) +6 x (1x6x1 + 2x7x9 + 3x5x0 - 9x6x3 - 0x7x1 - 1x5x2) = -3x(0) + 4x(-40) -5x(-80) + 6x(-40) = 0 3.3 Write a program that will accept a string of text several lines long, and output a list of each word used and how many times it was used. A word is defined as any contiguous sequence of letters, possibly including an apostrophe. Legal characters are A-Z, ., (space), ', !, and ?. Display the words in the order in which they appear in the text. Example: INPUT: Enter text: HOW MUCH WOOD COULD A WOODCHUCK CHUCK IF A WOODCHUCK COULD CHUCK WOOD? OUTPUT: 1 HOW 1 MUCH 2 WOOD 2 COULD 2 A 2 WOODCHUCK 2 CHUCK 1 IF 3.4 Write a program that accepts a string of input and encrypts it (puts it in code). Your program must be such that if the encoded string is input to the program, it will output the original string. For example, if the input is "NOW IS THE TIME" and the output is "DFEA* ASSA TESR" then if we input "DFEA* ASSA TESR" the output should be "NOW IS THE TIME". Note that there is no "switch" that tells the program whether or not the input is in code or not. Your program must be able to accept any character as inputted, including the non-printable ones (whose ASCII value is between 0 and 31 or between 93 and 255). In the case of non-printable characters, the input and output should be of the form "/nnn" where nnn is the ASCII number of the character. Thus to encode (or report) a carriage return, CHR$(13), one would enter /013. Similarly on output, a carriage return will be represented by /013. Use // to represent the character {/}. You may use /044 to enter a {,} and /058 to enter a {:} if you like. In this case you may output either the /044 or a {,}. Similarly you many output either the /058 or a {:}. The following is an example of two different runs: INPUT: Enter text: HERE I AM OUTPUT: G6/0298F*/030[` INPUT: Enter text: G6/0298F*/030[` OUTPUT: HERE I AM HINT: You can be creative in designing an encryption routine. Your input of "HERE I AM" may give a different sequence of characters than those above. However, your sequence should give as output "HERE I AM" whenever this sequence is input. 3.5 Debbie thought up 2 four digit numbers and multiplied them together. From the product, she removed one of the digits and scrambled the rest. She also scrambled up the four digit numbers. If 5132 and 4735 were the scrambled four digit numbers and 8014153 is the scrambled product with one digit removed, write a program to find two possible sets of the 3 unscrambled numbers. Display each set with its elements in ascending order in the format shown below. The order of the two sets does not matter. Example: OUTPUT: #### #### ######## #### #### ######## 3.6 Rubik's Pocket Cube is a two by two by two inch cube, each side containing a different color. Each side is divided into 4 square regions (dimensions of one inch by one inch). The sides of this puzzle move independently of each other. Write a program that reads into an array the color symbols (W,Y,O,G,R,B) for each of the 4 squares in its original state (4 W's on top, 4 Y's in front, 4 O's on the right, 4 G's on the back, 4 R's on the left, and 4 B's on the bottom). Your program then repeatedly asks for one clockwise rotation of either the top side or the front side. If Q is entered instead, then the program quits. Otherwise, your program must then display the 4 color symbols that are currently on the front side (from left to right, top to bottom). Example: INPUT: Enter T, F, or Q: T OUTPUT: O O Y Y INPUT: Enter T, F, or Q: F OUTPUT: Y O Y O INPUT: Enter T, F or Q: Q OUTPUT: (program terminates) 3.7 Write a program to simulate a mini drill and practice for adding Roman Numerals. The program first accept a user's name and the date. The program will then display the following menu after clearing the screen: 1. INSTRUCTION PAGE 2. PRACTICE 3 PROBLEMS 3. QUIT If OPTION 3 is chosen, then the program quits. If OPTION 1 is chosen then the following instruction page will appear after clearing the screen: YOU WILL BE GIVEN 3 PROBLEMS TO WORK. A PROBLEM WILL CONSIST OF ADDING TWO RANDOMLY GENERATED ROMAN NUMERALS LESS THAN 20. YOU WILL TYPE YOUR ANSWER IN ROMAN NUMERALS AND PRESS `RETURN.' (PRESS ANY KEY TO RETURN TO MENU.) The program then waits for a key to be pressed and then displays the menu after clearing the screen. If OPTION 2 is chosen then a problem is displayed in the center portion of the screen with each of the numerals right justified. The bottom numeral must have a + on its left with a space between. An underlined dash must be displayed on the row below the bottom numeral and extend from the + to the right-most character in the bottom numeral. Example: IV + XIX ----- The user's response will be accepted directly under this line. If the answer is CORRECT, then the next problem is displayed. If the answer is INCORRECT, the Arabic form of the answer will be displayed somewhere close to the bottom, and the user will have one more chance to correctly answer the problem. After three problems are completed, a progress report will be displayed: PROGRESS REPORT DATE: NAME: NUMBER CORRECT: NUMBER OF EXERCISES: 3 PERCENT CORRECT: (rounded to the nearest integer) (If there is at least one wrong answer then the following report is also displayed with this heading and the corresponding information below the appropriate headings.) WRONG ANSWER CORRECT ANSWER ARABIC (user's last answer) (Roman Numeral) (The sum) The program then displays the message "PRESS ANY KEY TO RETURN TO MENU." at the bottom. When a key is pressed, the program will clear the screen and display the menu. 3.8 Write a program to determine the area shared in common (if any) with two rectangles given the 4 coordinates of the corners of each rectangle. The corners will have integer coordinates that lie within the third quadrant of the Cartesian plane (all coordinates will be negative and have an absolute value less than 20.) For convenience, each rectangles' coordinates will be entered beginning with the X,Y coordinate of the bottom right hand corner and go clock-wise to the other 3 corners. Example: INPUT: Enter X,Y: -4,-18 Enter X,Y: -15,-18 Enter X,Y: -15,-2 Enter X,Y: -4,-2 Enter A,B: -9,-10 Enter A,B: -12,-10 Enter A,B: -12,-8 Enter A,B: -9,-8 OUTPUT: 6 3.9 Write a program to divide two big positive numbers, each with at most 30 digits. The first number will be greater than the second. The program must display the quotient of the first number divided by the second number and the remainder as a whole number. Example: INPUT: Enter first number: 123456789012345678903 Enter second number: 1234567890 OUTPUT: 100000000010 REMAINDER 3 3.10 Write a program to produce random mazes of dimensions 8 paths by 5 paths. The outer perimeter is 33 asterisks by 16 asterisks. Each horizontal wall segment shall consist of 4 asterisks (from the point of connection), and each vertical wall segment consists of 3 asterisks (from the point of connection). There are 7x4=28 walls that must be displayed. There must not be a wall that is not rooted to the perimeter of the maze. Every area in the maze must be accessible (no closed off areas). On both sides of the maze perimeter, one wall must be removed to allow an outlet. Examples: ********************************* * * * * * ***** ***************** * * * * * * * * * * * * * * * * * ***** * ***** * * * * * * * * * * * ********* * * ***** * * * * * * * * * * * * * * * * ***** * ***** * ***** * * * * * * ********************************* ********************************* * * * * * * * ***** ***** ********* * * * * * * * * * * * * ***** ***** ********* * * * * * * * * * * * * ***** ***** * * * * * * * * * * * * * * * * * * ***** ********* * * * * * * * * * * *********************************