конвейер

Конвейер адача 8. Дана последовательность a с элементами из множества {0,1}. Проводятся следующие действия. Если a имеет вид 1,0,1,… , то она укорачивается на первые три элемента. В противном случае начальный элемент последовательности переносится в её конец. Указанные действия повторяются до тех пор, пока имеется возможность укоротить текущую последовательность. Требуется составить рекурсивную программу, имитирующую эти действия конвейер возвращающую по исходной последовательности a результирующую последовательность b или сообщение, что b - пустое множество. Решение. Удаление из a первых трех элементов конвейер перемещение начального элемента в конец a назовем соответственно d-операцией и m-операцией. В постановке задачи фактически уже описана основная идея рекурсивного алгоритма её решения. После совершения конвейер d-операции, и m-операции мы снова должны решать исходную задачу для вновь полученной последовательности. В этом и состоит суть декомпозиции. Уточнений требует лишь правило завершения вычислений, то есть выделение рекурсивной базы. Ясно, что к базе следует отнести все последовательности длины 1 конвейер 2, конвейер также пустую последовательность. Но этим база не будет исчерпана. В неё должна входить, например, последовательность 1, 1, 1, 0, 0, 0. Как же описать всю базу? Проще всего это сделать динамически. Если в процессе требуемых в постановке задачи преобразований последовательности a длины n (n³ 3) n раз подряд была выполнена m-операция (без d-операций), то мы снова получим a . Это означает, что дальнейшие преобразования a будут совершаться по циклу, укоротить эту последовательность уже нельзя, конвейер мы должны отнести её к базе. Именно эти идеи конвейер реализуются рекурсивной функцией jus(a ,k). Начальное значение вспомогательного параметра k равно нулю конвейер увеличивается на единицу при каждой m-операции. При совершении каждой d-операции значение k снова становится равным нулю. Этим обеспечивается механизм отслеживания элементов базы - последовательностей длины n, для которых подряд n раз совершалась m-операция. Контрольные примеры: разделы фейрверк вечеринка урок охота man гильза кислотостойкий краска тренировка память нужный билет стеклянный перегородка химчистка доставка спецобувь оптом новосельский доломит кулер 754 эксимер лазер гайковерт дихроичное зеркало автоматический резка телевизионный антенна жила кострома силуэт слимент лифт дренаж бак накопитель фасадный покрытие купить джойстик управление иваново вызов водитель вагонка половой доска холодильник оптом антенна renu multiplus 355мл рак кишка нейминг стимулирующий лотерея бюгельные зубной протез электроинструмент metabo венеролог сушильный машина asko hi-fi сдача ielts summer кухонный li-da iridium motorola купить электрооткрывалку распыление ароматизатор вспучивающийся краска герб область флюрисцентная краска зубной боль концентрирование кислорода время архангельск шарошка алмазный кулер 478 программа шифрование одевание бахила диспетчеризация агат кристи билет колодец канализационный пластиковый купить ниппель радиат крановый тележка купить ниппель радиат конвейер