Skip to content

Instantly share code, notes, and snippets.

@boredzo
Created December 10, 2013 21:39
Show Gist options
  • Save boredzo/7900710 to your computer and use it in GitHub Desktop.
Save boredzo/7900710 to your computer and use it in GitHub Desktop.
Convert words from a line-separated file to T9 keypresses
#!/usr/bin/env python
import re
keys = [
'.,@1?!*#/\':;',
'abc2',
'def3',
'ghi4',
'jkl5',
'mno6',
'pqrs7',
'tuv8',
'wxyz9',
]
letter_exp = re.compile('|'.join('[' + re.escape(letters) + ']' for letters in keys))
def letter_sub(match):
for letters in keys:
key_num = letters.find(match.group(0))
if key_num > -1:
return str(keys.index(letters) + 1) * (key_num + 1) + ' '
consecutive_keypresses_exp = re.compile('|'.join('[' + str(num) + ' ]+' for num in xrange(1,10)))
longest_run = 0
longest_run_word = None
import fileinput
for line in fileinput.input():
word = line.strip()
word_t9 = letter_exp.sub(letter_sub, word.lower()).strip()
print word, word_t9
for match in consecutive_keypresses_exp.finditer(word_t9):
keypresses = ''.join(match.group(0).split())
if len(keypresses) > longest_run:
longest_run = len(keypresses)
longest_run_word = word
else:
print 'Longest number of keypresses:', longest_run_word, 'at', longest_run, 'consecutive presses of the same key'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment