Составьте алгоритм (pascalabc), в результате которого получится "слово", состоящее из букв "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", стоящих в случайном порядке, при этом: за "a" могут следовать только "e и "i"; за "b" могут следовать только "f" и "j"; за "c" могут следовать только "g" и "k"; за "d" могут следовать только "h" и "l"; за "e" могут следовать только "a" и "i"; за "f" могут следовать только "b" и "j"; за "g" могут следовать только "c" и "k"; за "h" могут следовать только "d" и "l"; за "i" могут следовать только "a" и "e"; за "j" могут следовать только "b" и "f"; за "k" могут следовать только "c" и "g"; за "l" могут следовать только "d" и "h". результатом алгоритма должно стать "слово" состоящее из 32 букв (повтор букв позволяется).
(('e','i'),('f','j'),('g','k'),('h','l'),('a','i'),('b','j'),
('c','k'),('d','l'),('a','e'),('b','f'),('c','g'),('d','h'));
i,k: integer; s:string;
begin
Randomize;
k:=random(12);
s:=''+chr(ord('a')+k);
for i:=2 to 32 do
s:=s+a[s[i-1],random(2)];
writeln(s);
end.
Пример:
var a: char; b: string; code, c: integer;
label dne;begin readln(a); //Читаем code := Ord(a); //Преобразуем b := Concat(b, a); for c := 1 to 31 do begin case code of 97, 65: begin//если "A" readln(a); code := Ord(a); case code of 101, 69: b := Concat(b, a); 105, 73: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 98, 66: begin//Если "B" read(a); code := Ord(a); case code of 102, 70: b := Concat(b, a); 106, 74: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 99, 67: begin//Если "C" read(a); code := Ord(a); case code of 103, 71: b := Concat(b, a); 107, 75: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 100, 68: begin//Если "D" read(a); code := Ord(a); case code of 104, 72: b := Concat(b, a); 108, 76: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 101, 69: begin//Если "E" readln(a); code := Ord(a); case code of 97, 65: b := Concat(b, a); 105, 73: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 102, 70: begin//Если "F" readln(a); code := Ord(a); case code of 98, 66: b := Concat(b, a); 106, 74: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 103, 71: begin//Если "G" readln(a); code := Ord(a); case code of 99, 67: b := Concat(b, a); 107, 75: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 104, 72: begin//Если "H" readln(a); code := Ord(a); case code of 100, 68: b := Concat(b, a); 108, 76: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 105, 73: begin//Если "I" readln(a); code := Ord(a); case code of 97, 65: b := Concat(b, a); 101, 69: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 106, 74: begin//Если "J" readln(a); code := Ord(a); case code of 98, 66: b := Concat(b, a); 102, 70: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 107, 75: begin//Если "K" readln(a); code := Ord(a); case code of 99, 67: b := Concat(b, a); 103, 71: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; 108, 76: begin//Если "L" readln(a); code := Ord(a); case code of 100, 68: b := Concat(b, a); 104, 72: b := Concat(b, a); else begin writeln('За предыдущей буквой не может следовать эта буква. Завершение!');goto dne end; end; end; end; end; writeln(b); dne: end.