project_python.3.1/lesson.18.py

60 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

''' ****** Задание 18 из 20 *********
* RLE (Run-Length Encoding) — это способ сокращённой записи повторяющихся символов.
Вместо длинной группы одинаковых символов записывается сам символ и число его повторений.
Например, 99999 превращается в 9 5 («девять пять раз»).
Напишите программу, которая получает строку из цифр и выводит её RLE-представление: последовательность пар «цифра — количество подряд идущих повторений».
Формат ввода
Строка цифр длиной не меньше 1.
Формат вывода
Пары: сама цифра и количество повторений цифры подряд во введённой строке, как описано в условии и показано в примере.
Подсказка
Считайте данные (например в переменную text):
Преобразуйте данные:
reference = text[0] # в качестве опорной цифры возьмите первую
counter = 1 # мы точно знаем, что одна такая цифра есть =)
text = text[1:] + '_' # удалите первую цифру и добавьте "отличительный" признак конца строки
Организуйте цикл по text (например используя переменную digit)
Постройте алгоритм следующим образом:
если цифра равна опорной - увеличиваем количество;
если это новая цифра - выведите опорную и количество раз что вы ее наблюдали, обновите опорную цифру и счётчик.
В конце цикла вы увидите знак _, который точно не будет равен последней опорной цифре.
Пример 1
Ввод
010000100001111111110111110000000000000011111111
Вывод
0 1
1 1
0 4
1 1
0 4
1 9
0 1
1 5
0 14
1 8
'''
if __name__ == "__main__":
line = input()
temp_line, repeat = line[0], 1
for i in line[1:]:
if i == temp_line:
repeat += 1
else:
print(temp_line, repeat)
temp_line, repeat = i, 1
print(temp_line, repeat)