Вопрос, который вызвал трудности
В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч» и «О».
Нужно вывести на экран все возможные слова, состоящие из K букв,
в которых есть по крайней мере две одинаковые буквы,
не обязательно стоящие рядом. Программа не должна строить другие слова,
не соответствующие условию.
Ответ экспертов Учись.Ru
Чтобы дать полноценный ответ, был привлечён специалист, который хорошо разбирается в теме.
После обсуждения с другими специалистами сервиса мы пришли к выводу, что правильный ответ на ваш вопрос будет звучать следующим образом:
Const
ab = 'ышчо'; //алфавит племени
var
vort: string;
j, k, raz: integer;
per: boolean;//признак переноса разряда
//проверка наличия совпадающих букв в слове
function kond(var vort: string): boolean;
var
n: integer;
begin
result := false;
n := length(vort);
for var i := 1 to n - 1 do
for var j := i + 1 to n do
if vort[j] = vort[i] then
begin
result := true;
exit;
end;
end;
begin
writeln('Введите k');
readln(k);
for var i := 1 to k do
vort := vort + ab[1];
raz := k;
per := false;
while raz > 0 do
if per then
begin
while vort[raz] = ab[4] do
begin
vort[raz] := ab[1];
raz := raz - 1;
if raz < 1 then exit;
end;
j := pos(vort[raz], ab) + 1;
vort[raz] := ab[j];
per := false;
raz := k;
end
else
begin
if kond(vort) then writeln(vort);
j := pos(vort[k], ab) + 1;
if j > 4 then
per := true
else
vort[k] := ab[j];
end;
end.