Архив задач

Защитный блок

Промышленная установка управляется по 4-разрядной шине данных. Команды по ней передаются последовательно. Для удобства записи будем интерпретировать их как символы в алфавите 0,1,2,..,9,A,B,C,D,E,F.

Известно, что некоторые цепочки команд приводят к поломке установки. Поэтому на шине планируется установить защитный блок, исправляющий такие цепочки на безопасные. Логика работы защитного блока определяется двумя таблицами. Первая из них определяет следующую активную строку в зависимости от входного символа и текущей активной строки (функция переходов). Вторая таблица определяет, что появится на выходе защитного блока в зависимости от входного символа и текущей активной строки (функция выходов). В начальный момент времени активна строка с номером 0. Фрагмент кода функции работы защитного блока приведен ниже.

Паскаль

Си

type matrix=

array[1..n,1..m] of

integer;

function GetOutput(

StateMas : matrix;
OutMas : matrix;
InSymb : integer;
var CurState:integer):

integer;

var

NewState:integer;

OutSymb:integer;

begin

NewState :=

StateMas[CurState]

[InSymb];

OutSymb :=

OutMas[CurState]

[InSymb];

CurState := NewState;

result := OutSymb;

end;

int GetOutput(

int **StateMas,
int **OutMas,
int InSymb,
int& CurState)

// StateMas –таблица(матрица) переходов

// OutMas – таблица(матрица) выходов

// InSymb – входной символ

// CurState – текущее состояние (меняется в результате выполнения функции)

// RETURN – выходной символ

{

int NewState;

int OutSymb;


NewState =

StateMas[CurState]

[InSymb];

OutSymb =

OutMas[CurState]

[InSymb];

CurState = NewState;

return OutSymb;

}

Настройте защитный блок таким образом, чтобы он пропускал все команды, кроме запрещенных, вместо которых на выходе должна появиться безопасная выходная последовательность (см. таблицу).

Запрещенная входная
последовательность

Выходная последовательность

1F10AE

1F10A1

Результат выполнения задачи – файл с прошивкой защитного блока.

Комментарий. К задаче прилагается: программа обучения и тестирования защитного блока.