Компьютер генерирует четырехзначное число. Цифры в числе не
должны повторяться! 0 может стоять на первом месте. Игрок делает
ходы, чтобы узнать это число. В ответ на каждый ход компьютер
показывает число отгаданных цифр, стоящих на своих местах
(число быков) и число отгаданных цифр, стоящих не на своих
местах (число коров). Игра продолжается до тех пор, пока число не
будет угадано. При это необходимо считать количество попыток,
которые потребовалось сделать игроку для угадывания числа,
Answers & Comments
Программа Pascal:
var ag,x,x1,s1,s2,sp:integer;
a1,a2:array[0..3] of integer;
begin
while (a1[0]=a1[1]) or (a1[1]=a1[2]) or (a1[2]=a1[3]) or (a1[3]=a1[0]) or (a1[1]=a1[3]) or (a1[2]=a1[0]) do
begin
x:=random(8999)+1000;
ag:=10000;
for var i1:=0 to 3 do
begin
a1[i1]:= (x mod ag) div (ag div 10);
ag:=ag div 10;
end;
end;
while x<>x1 do
begin
x1:=0;
while (x1<1000) or (9999<x1) do
begin
writeln; write('Введите 4ехзначное число = '); readln(x1);
end;
ag:=10000;
for var i2:=0 to 3 do
begin
a2[i2]:= (x1 mod ag) div (ag div 10);
ag:=ag div 10;
end;
s1:=0;
if (a2[0]=a1[0]) then s1:=s1+1;
if (a2[1]=a1[1]) then s1:=s1+1;
if (a2[2]=a1[2]) then s1:=s1+1;
if (a2[3]=a1[3]) then s1:=s1+1;
writeln('Число быков = ',s1);
s2:=0;
if (a2[0]=a1[0]) or (a2[0]=a1[1]) or (a2[0]=a1[2]) or (a2[0]=a1[3]) then s2:=s2+1;
if (a2[1]<>a2[0]) or (a2[1]<>a2[2]) or (a2[1]<>a2[3]) then
if (a2[1]=a1[0]) or (a2[1]=a1[1]) or (a2[1]=a1[2]) or (a2[1]=a1[3]) then s2:=s2+1;
if (a2[2]<>a2[0]) or (a2[2]<>a2[1]) or (a2[2]<>a2[3]) then
if (a2[2]=a1[0]) or (a2[2]=a1[1]) or (a2[2]=a1[2]) or (a2[2]=a1[3]) then s2:=s2+1;
if (a2[3]<>a2[0]) or (a2[3]<>a2[1]) or (a2[3]<>a2[2]) then
if (a2[3]=a1[0]) or (a2[3]=a1[1]) or (a2[3]=a1[2]) or (a2[3]=a1[3]) then s2:=s2+1;
writeln('Число коров = ',s2-s1);
sp:=sp+1;
writeln('Попытка ',sp);
end;
writeln; write('ПОЗДРАВЛЯЮ, ВЫ УГАДАЛИ ЧИСЛО!');
end.