-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrainer_stepik_encode_data.py
46 lines (33 loc) · 1.96 KB
/
trainer_stepik_encode_data.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""
Кодирование длин серий — это базовый алгоритм сжатия данных.
В этой задаче мы реализуем одну из самых простых его вариантов.
На вход алгоритму подаётся строка, содержащая символы латинского алфавита. Эта строка разбивается на группы одинаковых символов, идущих подряд ("серии"). Каждая серия характеризуется повторяющимся символом и количеством повторений. Именно эта информация и записывается в код: сначала пишется длина серии повторяющихся символов, затем сам символ. У серий длиной в один символ количество повторений будем опускать.
Например, рассмотрим строку
aaabccccCCaB
Разобъём её на серии
aaa b cccc CC a B
После чего закодируем серии и получим итоговую строку, которую и будем считать результатом работы алгоритма.
3ab4c2CaB
Формат ввода:
Одна строка, содержащая произвольные символы латинского алфавита.
Формат вывода:
Строка, содержащая закодированную последовательность.
Sample Input 1:
aaabccccCCaB
Sample Output 1:
3ab4c2CaB
Sample Input 2:
a
Sample Output 2:
a
"""
# my solution
counter, inp_str = 0, input() + ' '
prev = inp_str[0]
for value in inp_str:
if prev != value:
print(str(counter) + prev if counter != 1 else prev, end='')
counter = 1
else:
counter += 1
prev = value