Вначале определим, что такое кодирование (также и кодирование сообщений) методом RLE:
"Кодирование длин серий (англ. run-length encoding, RLE) или кодирование повторов — алгоритм сжатия данных, заменяющий повторяющиеся символы (серии) на один символ и число его повторов. Серией называется последовательность, состоящая из нескольких одинаковых символов. При кодировании (упаковке, сжатии) строка одинаковых символов, составляющих серию, заменяется строкой, содержащей сам повторяющийся символ и количество его повторов." Если внимательно это прочитать, то сразу становится понятно, как решать ваше задание:
1.) ИВВВ111у - 1И3В311у4ф
2.) еВпппВ11уфффуугггддд - 1е1В3п1В211у3ф2у3г3д
3.) РРппВ12уллл3336 - 2Р2п1В11121у3л4р3316
(жирным шрифтом обозначено количество одинаковых символов в строке, обозначается повторяющийся символ сразу после числа, прописаного жирным шрифтом).
Также можно сосчитать во сколько раз уменьшилась строка (то есть эффективность данной кодировки):
Для первой строки: 12÷10 = 1.2 (эффект присутствует)
Для второй строки: 20÷20 = 1 (никакого эффекта, к сожалению)
Для третей строки: 19÷20 = 0.95 (лучше бы не кодировали :) )
Поделитесь своими знаниями, ответьте на вопрос:
Наведіть приклади речень, які не є висловлюваннями ПОЖ До ть сросно нада
i,NOD,NOK,k,N:integer;
Begin
Write('N = ');ReadLn(N);
Write('Введите числа (',N,' шт.): ');
For i:= 1 to N do
Read(A[i]);
{Поиск НОК}
NOK:=abs(A[1]);
For i:= 2 to N do
if abs(A[i])<NOK then NOK:=abs(A[i]);
if NOK = 0 then NOK:=1;
Repeat
k:=0;
For i:= 1 to N do
if A[i] mod NOK = 0 then k:=k+1;
NOK:=NOK-1;
Until k=N;
WriteLn('NOK = ',NOK+1);
{Поиск НОД}
NOD:=A[1];
For i:= 2 to N do
if abs(A[i])>NOD then NOD:=A[i];
Repeat
k:=0;
For i:= 1 to N do
if NOD mod A[i] = 0 then k:=k+1;
NOD:=NOD+1;
Until k=N;
WriteLn('NOD = ',NOD-1)
End.