Статья Автор: Лебедев Дмитрий

TUZ_4-05. Объединение соседних цветов по заданным правилам

TUZ_4-05. Объединение соседних цветов по заданным правилам

TUZ_4-05. Объединение соседних цветов по заданным правилам
4.5. Объединение соседних цветов по заданным правилам
В этом задании дана строка, состоящая из символов, соответствующих трем цветам: yellow (желтый), red (красный) и blue (синий).
Требуется попарно скомбинировать цвета, составляющие эту строку, и получить ответ, применяя следующие правила.
1. Если складываются два одинаковых цвета, то в результате получается тот же самый цвет.
2. Если складываются два разных цвета, то в результате получается третий цвет.
3. Например, для строки s = 'rybyr' результат определяется, как описано далее.
  • Начиная с крайнего левого индекса рассматривается пара элементов с индексами 0 и 0 + 1 (r и y),
    комбинирование которых дает цвет b (r и y – разные цвета, поэтому получается третий цвет,
    в этом примере b, согласно второму правилу), и b вставляется в массив A,
  • следующая пара, 1 и 1 + 1 (y и b), дает r, и r вставляется в массив A.
  • Следующая пара, 2 и 2 + 1 (b and y), дает r, и r вставляется в массив A,
  • следующая пара, 3 и 3 + 1 (y и r), дает b, и b вставляется в массив A.
В результате получается массив А= brrb.
Далее анализируется массив A.
  • Начиная с крайнего левого индекса рассматривается пара элементов с индексами 0 и 0 + 1 (b и r),
    комбинирование которых дает цвет y, и y вставляется в массив B.
  • Следующая пара, 1 и 1 + 1 (r и r), дает r, и r вставляется в массив B,
  • следующая пара, 2 и 2 + 1 (r и b), дает y, и y вставляется в массив B.
  • В результате получается массив B = yry.
Далее анализируется массив B.
  • Начиная с крайнего левого индекса рассматривается пара элементов с индексами 0 и 0 + 1 (y и r),
    комбинирование которых дает цвет b, и b вставляется в массив C.
  • Следующая пара, 1 и 1 + 1 (r и y), дает b, и b вставляется в массив C.
  • В результате получается массив C = bb.
Аналогично анализируется массив C, и получается массив D = b.
Длина D равна единице, и его единственный элемент (в данном примере b) является возвращаемым значением.
Ваша задача: написать функцию, которая принимает строку, состоящую из символов, соответствующих трем цветам,
и возвращает один цвет, полученный в результате комбинирования.
В табл. 4.5 показаны ожидаемые результаты для некоторых входных данных.
Таблица 4.5. Некоторые ожидаемые результаты для задачи объединения соседних цветов по заданным правилам
Colors Ожидаемый результат
rybyr b
rrrryybby y
rby b
bbbryryrybrrbyr y

Алгоритм
Алгоритм принимает строку, состоящую из символов, соответствующих трем цветам, и возвращает один цвет.
Для этого он многократно объединяет попарно соседние цвета, пока не останется только один цвет.
В частности, он делит входной список цветов на более мелкие списки цветов, а затем объединяет каждую пару независимо.
Получившийся цвет возвращается в качестве результата.
Чтобы избежать повторного вычисления одних и тех же комбинаций снова и снова,
функция запоминает предыдущие результаты в словаре, чтобы использовать их, если понадобится.
 


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать