#32277: python ans


yuxuan0912 (李毓萱Laura)

學校 : 不指定學校
編號 : 197335
來源 : [1.34.135.237]
最後登入時間 :
2023-12-07 21:47:26
a131. 00739 - Soundex Indexing -- UVa739 | From: [1.34.135.237] | 發表日期 : 2022-09-26 11:04

'''
1. 名字的第一個字母成為編碼中第一且唯一的字母。
2. A, E, I, O, U, Y, W 及 H 等字母不列入編碼,但可以拆散兩個連續編碼 (參見下一條)。
3. 其餘的字母都必需編碼,除非它緊跟在一個編碼相同的字母之後。
4. Soundex 編碼表為:
1    B, P, F, V
2    C, S, K, G, J, Q, X, Z
3    D, T
4    L
5    M, N
6    R
5. 所有名字的編碼都是一位字母加三位數字,不足的位數補 0。
6. 第三位數字之後的編碼捨去。
'''
dictn=["BPFV","CSKGJQXZ","DT","L","MN","R","AEIOUYWH"]
print("NAME                     SOUNDEX CODE")
import re
while 1:
    try:
        l=input()
        e=l[0]
        for i in range(len(l)):
            c=str([dictn.index(j) for j in dictn if l[i] in j][0]+1)
            if c!=e[-1]:e+=c
            if len(e.replace("7",""))==((5,4)[[dictn.index(j) for j in dictn if l[0] in j][0]==6]):break
        e=e[0]+e[2:]
        e=e.replace("7","")
        while len(e)<4:e+="0"
        while len(l)<25:l+=" "
        print(f"         {l}{e}")
    except EOFError:
        print("                   END OF OUTPUT")
        break

 

 
ZeroJudge Forum