Revision: 37549
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 11, 2010 16:15 by vishalag
Initial Code
def telrank(str):
""" Synopsis: Rank a string based on how fast it is to type on a typical phone keypad (lower is faster). Return -1 if invalid input.
Examples: 'PAPA': P-A-P-A = 4
'FATHER': DDD(F)-A-T-GG(H)-DD(E)-PPP(R) = 12
'DADDY': D-A-D-PAUSE-D-WWW(Y) = 7 + PAUSE_PENALTY
Reference:
ABC DEF
GHI JKL MNO
PQRS TUV WXYZ
"""
SEQ = "ADGJMPTWBEHKNQUXCFILORVY00000S0Z"
PAUSE_PENALTY = 100 # penalty if same key has to be pressed twice (for delay)
str = str.rstrip()
if not str.isalpha():
return -1
rank = 0
order = -1
for letter in str.upper():
idx = SEQ.find(letter)
level = idx/8
if order == idx%8:
pause_penalty = PAUSE_PENALTY
else:
pause_penalty = 0
order = idx%8
rank = rank + level + pause_penalty + 1
return rank
Initial URL
http://i.vshal.com/2010/12/telrank.html
Initial Description
Initial Title
TelRank: Telephone Keypad Speed Ranker
Initial Tags
phone
Initial Language
Python