Guest User

Untitled

a guest
Apr 17th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.39 KB | None | 0 0
  1. from collections import deque
  2. import csv
  3. import sys
  4.  
  5. class KeyboardClass():
  6.     def __init__(self):
  7.         self.hflip_object = [["1","2","3","4","5","6","7","8","9","0"],
  8.                             ["q","w","e","r","t","y","u","i","o","p"],
  9.                             ["a","s","d","f","g","h","j","k","l",";"],
  10.                             ["z","x","c","v","b","n","m",",",".","/"]
  11.                             ]
  12.  
  13.         self.vflip_object = [["1","q","a","z"],
  14.                             ["2","w","s","x"],
  15.                             ["3","e","d","c"],
  16.                             ["4","r","f","v"],
  17.                             ["5","t","g","b"],
  18.                             ["6","y","h","n"],
  19.                             ["7","u","j","m"],
  20.                             ["8","i","k",","],
  21.                             ["9","o","l","."],
  22.                             ["0","p",";","/"]
  23.                             ]
  24.        
  25.         self.shift_object = deque('1234567890qwertyuiopasdfghjkl;zxcvbnm,./')
  26.         self.original = "1234567890qwertyuiopasdfghjkl;zxcvbnm,./"
  27.         self.map = {}
  28.  
  29.     def hflip(self):
  30.         for row in self.hflip_object:
  31.             row.reverse()
  32.         self.redraw_after_hflip()
  33.    
  34.     def vflip(self):
  35.         for column in self.vflip_object:
  36.             column.reverse()
  37.         self.redraw_after_vflip()
  38.  
  39.     def shift(self, rotation):
  40.         self.shift_object.rotate(rotation)
  41.         self.redraw_after_shift()
  42.  
  43.     def redraw_after_hflip(self):
  44.         self.vflip_object = []
  45.         self.shift_object = deque('')
  46.         for row in self.hflip_object:
  47.             for letter in row:
  48.                 self.shift_object.append(letter)
  49.         for i in range(10):
  50.             column = []
  51.             for j in range(4):
  52.                 column.append(self.hflip_object[j][i])
  53.             self.vflip_object.append(column)
  54.  
  55.     def redraw_after_vflip(self):
  56.         self.hflip_object = []
  57.         self.shift_object = deque('')
  58.         for i in range(4):
  59.             row = []
  60.             for j in range(10):
  61.                 current_letter = self.vflip_object[j][i]
  62.                 row.append(current_letter)
  63.                 self.shift_object.append(current_letter)
  64.             self.hflip_object.append(row)
  65.    
  66.     def redraw_after_shift(self):
  67.         self.hflip_object = []
  68.         self.vflip_object = []
  69.  
  70.         temp = deque('')
  71.         for letter in self.shift_object:
  72.             temp.append(letter)
  73.  
  74.         for i in range(4):
  75.             row = []
  76.             for j in range(10):
  77.                  row.append(temp.popleft())
  78.             self.hflip_object.append(row)
  79.         for i in range(10):
  80.             column = []
  81.             for j in range(4):
  82.                 column.append(self.hflip_object[j][i])
  83.             self.vflip_object.append(column)
  84.    
  85.     def update_map(self):
  86.         current = []
  87.         for item in self.shift_object:
  88.             current.append(item)
  89.  
  90.         for key,value in zip(self.original,current):
  91.             self.map[key] = value
  92.  
  93.     def print_hflip_object(self):
  94.         for row in self.hflip_object:
  95.             print row
  96.         print
  97.  
  98.     def print_vflip_object(self):
  99.         for column in self.vflip_object:
  100.             print column
  101.         print
  102.  
  103.     def print_shift_object(self):
  104.         for letter in self.shift_object:
  105.             print letter,
  106.         print
  107.    
  108.     def apply_transforms(self, transforms):
  109.         for item in transforms:
  110.             if (item == "H"):
  111.                 self.hflip()
  112.             elif (item == "V"):
  113.                 self.vflip()
  114.             else:
  115.                 try:
  116.                     self.shift(int(item))
  117.                 except ValueError:
  118.                     print "invalid command"
  119.         self.update_map()
  120.  
  121.     def transform_text(self, content):
  122.         new_text = ""
  123.         for letter in content:
  124.             try:
  125.                 new_text += self.map[letter]
  126.             except KeyError:
  127.                 new_text += letter
  128.         print content
  129.         print
  130.         print new_text
  131.  
  132. command_file = csv.reader(open(sys.argv[1], 'rb'))
  133. for line in command_file:
  134.     transforms = line
  135. content_file = open(sys.argv[2], 'rb')
  136. content = content_file.read()
  137.  
  138. keyboard = KeyboardClass()
  139. keyboard.apply_transforms(transforms)
  140. keyboard.transform_text(content)
  141.  
  142. # usage: python main.py commands.txt content.txt
Add Comment
Please, Sign In to add comment