2011年7月27日 星期三

739 - Soundex Indexing

本題請你利用Sundex Index System來進行編碼,你的任務是要把許多名字編碼成soundex code,並將名字與編碼的結果輸出。

輸入的名字為長度1~20的全大寫字串,且不會有空白字元。

 

How to generate the Soundex Code: 

Sundex Code編碼一定是一個字母後面接三個位數的數字,編碼的原則如下:
  1. 名字的第一個字母就是編碼後的第一個字母,而且也是唯一一個字母。
  2. 字母A, E, I, O, U, Y, W, H不作編碼,但具有區隔連續數字編碼的作用(請參考下一個規則)。
  3. 除上述幾個字母不作編碼外,其他字母皆需進行編碼,但有一個例外是:如果該字母與上一個字母的編碼一致(包含第一個字母),則不進行編碼。
  4. 若編碼後的長度太短,請用0補滿到三個位數。
  5. 編碼到3個位數之後則結束,請捨棄剩下的字母。
  6. 編碼表如下:
CodeKey Letters and Equivalents
1B, P, F, V
2C, S, K, G, J, Q, X, Z
3D, T
4L
5M, N
6R


Input 

輸入的每一列都會有一個名字,每個名字不超過20個字元,且只會有大寫字母。讀到EOF表示輸入資料結束。

 

Output 

輸出的資料會有兩欄,第一欄為編碼前的名字,第二欄為編碼後的資料,請在第一列輸出兩欄位的標頭"NAME"與"SOUNDEX CODE",且請對齊從左邊數來第10與第35個字元的位置,每筆資料請以此方式對齊輸出。並請在最後一列第20個字元的位置輸出"END OF OUTPUT"。

Sample Input 

LEE
KUHNE
EBELL
EBELSON
SCHAEFER
SCHAAK

Sample Output 

         NAME                     SOUNDEX CODE
         LEE                      L000
         KUHNE                    K500
         EBELL                    E140
         EBELSON                  E142
         SCHAEFER                 S160
         SCHAAK                   S200
                   END OF OUTPUT
         |         |              |
         |         |              |__ 位置35
         |         |__ 位置20
         |__ 位置10


原文出處

沒有留言:

張貼留言