Сделал 18 задание
This commit is contained in:
parent
3d46086283
commit
c23fc31ce4
60
lesson.18.py
Normal file
60
lesson.18.py
Normal file
|
|
@ -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)
|
||||||
Loading…
Reference in a new issue