Найти - Пользователи
Полная версия: Объясните решение
Начало » Центр помощи » Объясните решение
1
Mr.Gned
Узнав, что ДНК не является случайной строкой, только что поступившие в Институт биоинформатики студенты группы информатиков предложили использовать алгоритм сжатия, который сжимает повторяющиеся символы в строке.

Кодирование осуществляется следующим образом:
s = ‘aaaabbсaa’ преобразуется в ‘a4b2с1a2’, то есть группы одинаковых символов исходной строки заменяются на этот символ и количество его повторений в этой позиции строки.

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


с решением помогли, но я не понимаю почему х = 1, мы же сравниваем первый и второй символ, а первый символ в строке 0. В чем логика?????
Решение:
message = str(input())
cnt = 1
x = 1
j = message (x:x+1)
for i in message:
if i in j:
cnt += 1
else:
print(i, end='')
print(cnt, end='')
cnt = 1
x += 1
j = message (x:x+1)

# скобки квадратные
py.user.next
Mr.Gned
но я не понимаю почему х = 1, мы же сравниваем первый и второй символ
Да ты просто не понял алгоритм, который реализован в этом коде. Чтобы понимать алгоритмы, реализованные в кодах, надо уметь рисовать блок-схемы. Также надо уметь пользоваться дебаггером. Чтобы уметь рисовать блок-схемы, надо их постоянно рисовать для своих кодов и желательно это делать до написания кодов, а не после, хотя поначалу ты это делаешь для кодов, которые уже написаны. Когда научишься рисовать блок-схемы на бумаге, со временем ты начнёшь их рисовать в воображении. И вот из блок-схемы, нарисованной в воображении, ты как раз и увидишь, почему x = 1 и почему там нуля нет.

Я бы тебе посоветовал в этом коде i заменить на char, а j заменить на nextchar. И x тоже надо заменить на nextcharpos. Из-за этих тупых названий переменных, которые тебе предложили, этот код и нечитаем.
Mr.Gned
Спасибо за совет, согласен с названиями полная непонятка. Сейчас попробую блок- схему нарисовать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB