Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import deque
- import csv
- import sys
- class KeyboardClass():
- def __init__(self):
- self.hflip_object = [["1","2","3","4","5","6","7","8","9","0"],
- ["q","w","e","r","t","y","u","i","o","p"],
- ["a","s","d","f","g","h","j","k","l",";"],
- ["z","x","c","v","b","n","m",",",".","/"]
- ]
- self.vflip_object = [["1","q","a","z"],
- ["2","w","s","x"],
- ["3","e","d","c"],
- ["4","r","f","v"],
- ["5","t","g","b"],
- ["6","y","h","n"],
- ["7","u","j","m"],
- ["8","i","k",","],
- ["9","o","l","."],
- ["0","p",";","/"]
- ]
- self.shift_object = deque('1234567890qwertyuiopasdfghjkl;zxcvbnm,./')
- self.original = "1234567890qwertyuiopasdfghjkl;zxcvbnm,./"
- self.map = {}
- def hflip(self):
- for row in self.hflip_object:
- row.reverse()
- self.redraw_after_hflip()
- def vflip(self):
- for column in self.vflip_object:
- column.reverse()
- self.redraw_after_vflip()
- def shift(self, rotation):
- self.shift_object.rotate(rotation)
- self.redraw_after_shift()
- def redraw_after_hflip(self):
- self.vflip_object = []
- self.shift_object = deque('')
- for row in self.hflip_object:
- for letter in row:
- self.shift_object.append(letter)
- for i in range(10):
- column = []
- for j in range(4):
- column.append(self.hflip_object[j][i])
- self.vflip_object.append(column)
- def redraw_after_vflip(self):
- self.hflip_object = []
- self.shift_object = deque('')
- for i in range(4):
- row = []
- for j in range(10):
- current_letter = self.vflip_object[j][i]
- row.append(current_letter)
- self.shift_object.append(current_letter)
- self.hflip_object.append(row)
- def redraw_after_shift(self):
- self.hflip_object = []
- self.vflip_object = []
- temp = deque('')
- for letter in self.shift_object:
- temp.append(letter)
- for i in range(4):
- row = []
- for j in range(10):
- row.append(temp.popleft())
- self.hflip_object.append(row)
- for i in range(10):
- column = []
- for j in range(4):
- column.append(self.hflip_object[j][i])
- self.vflip_object.append(column)
- def update_map(self):
- current = []
- for item in self.shift_object:
- current.append(item)
- for key,value in zip(self.original,current):
- self.map[key] = value
- def print_hflip_object(self):
- for row in self.hflip_object:
- print row
- print
- def print_vflip_object(self):
- for column in self.vflip_object:
- print column
- print
- def print_shift_object(self):
- for letter in self.shift_object:
- print letter,
- print
- def apply_transforms(self, transforms):
- for item in transforms:
- if (item == "H"):
- self.hflip()
- elif (item == "V"):
- self.vflip()
- else:
- try:
- self.shift(int(item))
- except ValueError:
- print "invalid command"
- self.update_map()
- def transform_text(self, content):
- new_text = ""
- for letter in content:
- try:
- new_text += self.map[letter]
- except KeyError:
- new_text += letter
- print content
- print
- print new_text
- command_file = csv.reader(open(sys.argv[1], 'rb'))
- for line in command_file:
- transforms = line
- content_file = open(sys.argv[2], 'rb')
- content = content_file.read()
- keyboard = KeyboardClass()
- keyboard.apply_transforms(transforms)
- keyboard.transform_text(content)
- # usage: python main.py commands.txt content.txt
Add Comment
Please, Sign In to add comment