Skip to content

Instantly share code, notes, and snippets.

@colonelpanic8
Last active July 6, 2016 18:58
Show Gist options
  • Select an option

  • Save colonelpanic8/5018963 to your computer and use it in GitHub Desktop.

Select an option

Save colonelpanic8/5018963 to your computer and use it in GitHub Desktop.
Mapping Letters to the numbers they are associated with on a telephone.
tarting_value = [0, 0] + [3 for i in range(5)] + [4, 3, 4]
partial_sums = [sum(starting_value[:i]) for i in range(len(starting_value)+1)]
letter_to_number = dict(reduce(
lambda x,
y: x+y,
[map(lambda letter: (letter, number), letters) for number, letters in enumerate(map(lambda a_list: map(lambda char: chr(char+65), a_list), [range(*value) for value in zip(partial_sums[:-1], partial_sums[1:])]))]
))
letter_to_number = dict((letter, number) for number, letters in enumerate(map(lambda a_list: map(lambda char: chr(char+65), a_list), [range(*value) for value in zip(partial_sums[:-1], partial_sums[1:])])) for letter in letters)
-- OR --
current_number = 0
ranges_for_number = {}
for number, number_letters in enumerate(starting_value):
ranges_for_number[number] = (current_number, current_number+number_letters)
current_number += number_letters
letter_to_number = {}
for number, letters in enumerate(map(lambda a_list: map(lambda char: chr(char+65), a_list), [range(*value) for value in ranges_for_number.itervalues()])):
for letter in letters:
letter_to_number[letter] = number
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment