Skip to content

Instantly share code, notes, and snippets.

@samuelhnrq
Created February 7, 2017 18:51
Show Gist options
  • Save samuelhnrq/cd15604ce807df4a4b855d39d1f9b1da to your computer and use it in GitHub Desktop.
Save samuelhnrq/cd15604ce807df4a4b855d39d1f9b1da to your computer and use it in GitHub Desktop.
One of each alphanumeric keyboard
class Combinator:
def __init__(self, bidimensional_list):
self.master = bidimensional_list
self.maxes = []
self.number = []
for li in range(0, len(bidimensional_list)):
self.maxes.append(len(self.master[li]) - 1)
self.number.append(0)
def next(self) -> bool:
for d in reversed(range(len(self.number))):
if self.number[d] < self.maxes[d]:
self.number[d] = self.number[d] + 1
return True
else:
self.number[d] = 0
return False
def full_digit(self) -> int:
j = ''
for i in self.number:
j += str(i)
return int(j)
def current(self) -> str:
res = ""
for i in range(len(self.master)):
res += str(self.master[i][self.number[i]])
return res
def main():
print("hello world")
numbers = [
(' ', '+'), #0
('.', ','), #1
('a', 'b', 'c'), #2
('d', 'e', 'f'), #3
('g', 'h', 'i'), #4
('j', 'k', 'l'), #5
('m', 'n', 'o'), #6
('p', 'q', 'r', 's'), #7
('t', 'u', 'v'), #8
('x', 'w', 'y', 'z') #9
]
print("Type a number sequence: ", end = '')
numb = input()
digits = []
for l in numb:
try:
digits.append(int(l))
except ValueError:
print("Not a number!")
main()
return
possib = []
ttl = 1
big = 3
for d in digits:
possib.append(numbers[d])
ttl *= len(numbers[d])
big = len(numbers[d]) if len(numbers[d]) > big else big
permutations = []
p = Combinator(possib)
print(p.current())
while p.next():
permutations += p.current()
print(p.current())
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment