파이썬 274 285 241 235 225 200 190 183 179 174 166 161
-마지막 절 (자음 구분자로 H 또는 W)을 수정했습니다. Ashcraft는 이제 올바른 결과를 얻었습니다. - DICT 작게 - 포맷하기가 (파이썬 2.6을 필요로하지 않습니다) 작은 -에 대한 간단한 DICT 검색 k
에서 변경된 모음 값 - '*'에 ''와 .append에 +=[i]
제거 전화 - FTW 목록의 이해 - upper: D
더 이상 골프를 칠 수 없습니다. 실제로 나는했다. 이제는 더 이상 골프를 칠 수 없다고 생각합니다! 그것을 다시했다...
변환 표 사용하기 :
def f(n):z=n.translate(65*'_'+'#123#12_#22455#12623#1_2#2'+165*'_').replace('_','');return n[0]+(''.join(('',j)[j>'#']for i,j in zip(z[0]+z,z)if i!=j)+'000')[:3]
이전 목록 이해 코드 :
x=dict(zip('CGJKQSXZDTLMNRBFPV','2'*8+'3345561111'))
def f(n):z=[x.get(i,'')for i in n if i not in'HW'];return n[0]+(''.join(j for i,j in zip([x.get(n[0])]+z,z)if i!=j)+'000')[:3]
오래된 코드 :
x=dict(zip('CGJKQSXZDTLMNRBFPV','2'*8+'3345561111'))
def f(n):
e=a=[];k=n[0]in x
for i in[x.get(i,'')for i in n.upper()if i not in'HW']:
if i!=a:e+=[i]
a=i
return n[0]+(''.join(e)+'000')[k:3+k]
테스트:
[f(i) for i in ['WASHINGTON', 'LEE', 'GUTIERREZ', 'PFSTER', 'JACKSON',
'TYMCZAK', 'VANDEUSEN', 'ASHCRAFT']]
제공합니다 :
['W252', 'L000', 'G362', 'P236', 'J250', 'T522', 'V532', 'A261']
예상대로.