Southern California Regional of the ACM International Collegiate Programming Contest
Telephone Directory Alphabetization
Based on its success in contracting previous software development efforts to programming contest teams, the String & Tin Can (S&TC) Telephone Company has now decided to produce its telephone directories internally. Your team has been hired to develop a program that will take subscriber names and telephone numbers and alphabetize them into a list for printing.
Telephone directories have traditionally used special conventions for alphabetization, and S&TC wants your program to use these conventions. Each subscriber listing consists of one or more "words,'' where each word is separated from the others by spaces or non-alphanumeric characters. Directories only use the letters A through Z for sorting, ignoring case. Therefore, names that include words comprised of digits or capital letters require special processing.
A listing may contain a word that is a decimal number. Listings with numbers in them appear in the alphabetized list in the same location they would if the numbers were spelled out in English. For example, "50 Star Company'' might appear just before "Fifty Star Vending'' in the list. Numbers are permitted to be in the range 0-999,999,999. Letters and digits will not appear together in the same word.
All special (non-alphanumeric) characters are to be treated as spaces. "Penny-Wise Corporation'' would appear after "Penny Saver,'' but before "Pennypinching Company.'' Multiple spaces or non-alphanumeric characters are treated as a single space when sorting. Special characters will not appear at the beginning of a listing.
Words that are comprised of all capital letters are assumed to be initials or acronyms, and are treated as if spaces appeared between each letter. Hence, "KAT Shop'' would appear at the beginning of the K listings, before "K-B Enterprises'' and "K Warehouse''.
Input to your program will be a list of subscribers, one per line. The first seven digits will be the telephone number, and the rest of the line will be the name of the subscriber as it is to appear in the telephone directory. Your program is to alphabetically sort the subscriber names according to the rules above and print the listing in order. Each line should contain the subscriber name as it appeared in the input in the first 52 positions, left justified and space filled, followed by the seven digit telephone number (including a space between the third and fourth digits) in columns 56 through 63. The telephone number is to be immediately followed by the end of line.
Your program need not handle more than 1,000 subscribers-none of the towns S&TC serves in Swamp County have populations larger than that.
7362812Penny Saver, Inc.
9273664Five Star Vending
723621899 Cents Only Store
|Fine Foods||837 2974|
|Five Star Vending||927 3664|
|KAT Shop||893 6251|
|K-B Enterprises||352 3984|
|Kate's Company||725 1887|
|99 Cents Only Store||723 6218|
|Penny Saver, Inc.||736 2812|