Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Алгоритм дешифровки строк, закодированных с помощью RLE
- # На вход алгоритму подаётся строка, содержащая цифры и символы латинского алфавита. Эта строка разбивается на так называемые "серии",
- # которые кодируются парой число-символ или просто символ (в таком случае число считается равным единице). Результат должен содержать эти
- # серии в том же порядке, что они и встречаются в исходной строке, при этом каждая серия раскрывается в последовательность символов
- # соответствующей длины.
- # Sample Input: 3ab4c2CaB
- # Sample Output: aaabccccCCaB
- import re
- genome = input()
- middlelist = []
- pattern = r"[a-zA-Z]"
- if re.match(pattern, genome[0]) != None:
- middlelist.extend('1')
- middlelist.extend(genome[0])
- else:
- middlelist.extend(genome[0])
- for i in range(1, len(genome)):
- k = len(middlelist)
- middlelist.extend(genome[i])
- if re.match(pattern, genome[i]) != None:
- if re.match(pattern, genome[i-1]) != None: # отрабатывает 2 буквы подряд
- middlelist.insert(k, 1) # корректно вставляет 1 перед буквой
- res = ""
- for i in middlelist:
- res += str(i)
- middlelist = [res]
- #print(res)
- letters = (re.findall('(\D+)', res)) # find all letters
- numbers = (re.findall('(\d+)', res)) # find all nums
- let = 0
- for i in numbers:
- mult = int(i)
- print(letters[let]*mult,end='')
- let+=1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement