diff --git a/lesson.18.py b/lesson.18.py new file mode 100644 index 0000000..c9c34ae --- /dev/null +++ b/lesson.18.py @@ -0,0 +1,60 @@ +''' ****** Задание 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) \ No newline at end of file