Advertisement
Guest User

Pokasova_Svetlana_4

a guest
Jul 29th, 2016
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.76 KB | None | 0 0
  1. # Алгоритм дешифровки строк, закодированных с помощью RLE
  2. # На вход алгоритму подаётся строка, содержащая цифры и символы латинского алфавита. Эта строка разбивается на так называемые "серии",
  3. # которые кодируются парой число-символ или просто символ (в таком случае число считается равным единице). Результат должен содержать эти
  4. # серии в том же порядке, что они и встречаются в исходной строке, при этом каждая серия раскрывается в последовательность символов
  5. # соответствующей длины.
  6. # Sample Input: 3ab4c2CaB
  7. # Sample Output: aaabccccCCaB
  8.  
  9. import re
  10. genome = input()
  11. middlelist = []
  12. pattern = r"[a-zA-Z]"
  13. if re.match(pattern, genome[0]) != None:
  14.     middlelist.extend('1')
  15.     middlelist.extend(genome[0])
  16. else:
  17.     middlelist.extend(genome[0])
  18. for i in range(1, len(genome)):
  19.     k = len(middlelist)
  20.     middlelist.extend(genome[i])
  21.     if re.match(pattern, genome[i]) != None:
  22.         if re.match(pattern, genome[i-1]) != None: # отрабатывает 2 буквы подряд
  23.             middlelist.insert(k, 1) # корректно вставляет 1 перед буквой
  24. res = ""
  25. for i in middlelist:
  26.   res += str(i)
  27. middlelist = [res]
  28.  
  29. #print(res)
  30. letters = (re.findall('(\D+)', res)) # find all letters
  31. numbers = (re.findall('(\d+)', res)) # find all nums
  32.  
  33. let = 0
  34. for i in numbers:
  35.     mult = int(i)
  36.     print(letters[let]*mult,end='')
  37.     let+=1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement