понедельник, 31 декабря 2018 г.

2.4 Строки и символы шаг 7

                               

Узнав, что ДНК не является случайной строкой, только что поступившие в Институт биоинформатики студенты группы информатиков предложили использовать алгоритм сжатия, который сжимает повторяющиеся символы в строке.

Кодирование осуществляется следующим образом:
s = 'aaaabbсaa' преобразуется в 'a4b2с1a2', то есть группы одинаковых символов исходной строки заменяются на этот символ и количество его повторений в этой позиции строки.
Напишите программу, которая считывает строку, кодирует её предложенным алгоритмом и выводит закодированную последовательность на стандартный вывод. Кодирование должно учитывать регистр символов.
Ответ:
z = input()
m = 1
x = 1
j = z[x:x+1]
for i in z:
    if i in j:
        m += 1
    else:
        print(i, end='')
        print(m, end='')
        m = 1
    x += 1
    j = z[x:x+1]


4 комментария:

  1. ....интересная манипуляция со срезами.....

    ОтветитьУдалить
  2. a=input()
    s=1
    a=a+'0'
    for j in range (0,len(a)-1):
    if a[j]==a[j+1]:
    s+=1
    else:
    print((a[j]+str(s)),end='')
    s=1

    ОтветитьУдалить
  3. Я не понимаю в 5 и 6 строчке появляется i, откуда программа понимает что это за i?

    ОтветитьУдалить
    Ответы
    1. Это некая переменная, которая подставляется под значения z, в теории там может быть любая другая переменная, j g n, она нужна, чтобы задать цикл

      Удалить

Задача №3477. Улитка

Улитка ползет по вертикальному шесту высотой  h  метров, поднимаясь за день на  a  метров, а за ночь спускаясь на  b  метров. На какой де...