Составьте алгоритм (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 букв (повтор букв позволяется).
Answers & Comments
(('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.
Пример:
dlhlhdlhdhldlhlhldhdhdlhdhdldhlh
Verified answer
Program Posledovatelnost;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.