Ниже представлен исходный код программы на языке C, реализующей описанный блок-схемой алгоритм:
1 int N = 10;
2 charSTR[16];
3 memcpy_s(STR, 16, "a123456789ABCDEF", 16);
4 inti = 1;
5 int m = sizeof(STR) - 1;
6 char C;
7 for(int k = 1 ; k <= N ; k++)
8 {
9 for(inti = 1 ; i<= m - 2 ; i++)
10 {
11 if(k % 2 == 0)
12 {
13 if(i % 2 == 0)
14 {
15 C = STR[i];
16 STR[i] = STR[i + 2];
17 STR[i + 2] = C;
18 }
19
20 }
21 else
22 {
23 C = STR[i];
24 STR[i] = STR[i + 1];
25 STR[i + 1] = C;
26 }
27 }
28}
На вход алгоритма подаются следующие данные:
N — количество шагов алгоритма;
m — (количество символов в строке) + 1;
STR — строка.
Из анализа данного кода следует, что данный алгоритм реализует перестановку символов в исходной строке STR следующим образом. Алгоритм состоит из 10 итераций. На каждой итерации алгоритма последовательно просматривается исходная строка STR. При этом её содержимое изменяется по следующим правилам:
Случай 1. Номер итерации алгоритма чётный.
В этом случае каждый символ строки, имеющий чётный индекс i, последовательно меняется местами с элементом, имеющим индекс i+2 (строки 15, 16, 17 кода).
Случай 2. Номер итерации алгоритма нечётный.
В этом случае каждый символ строки последовательно меняется местами с каждым следующим элементом строки (строки 23, 24, 25 кода).
Обозначим через B = (b, d, i, e, g, h, t, r, e, e, n, ‘ ‘, t, r, e) упорядоченный набор символов, соответствующий содержимому переменной STR после работы алгоритма, описанного блок-схемой, при N= 10.
Обозначим через A = (1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) – упорядоченный набор символов, отличных от элементов, входящих в B.
Пусть на вход алгоритма, заданного блок-схемой, подаётся строка STR, содержимое которой соответствует упорядоченному набору A. Тогда после обработки строки STR с использованием заданного алгоритма при N= 10 её содержимое с одной стороны описывается перестановкой C = (A,D,C,1,E,3,2,5,4,7,6,9,8,B,F) элементов упорядоченного набора Aи совпадает с упорядоченным набором B с другой стороны, т. е.C = (A,D,C,1,E,3,2,5,4,7,6,9,8,B,F) = (b, d, i, e, g, h, t, r, e, e, n, ‘ ‘, t, r, e) = B. Сопоставив соответствующие символы этих упорядоченных наборов, отсюда получаем, чтов исходном наборе 1 = e, 2 = t, 3 = h, 4 = e, 5 = r, 6 = n, 7 = e, 8 = t, 9 = ‘ ‘, A = b, B = r, C = i, D = d, E = g, F = e, следовательно, на вход алгоритма изначально подавалась строка ethernetbridge.