Изменения

Перейти к: навигация, поиск

Обсуждение:197 (игра)

2484 байта добавлено, 14:36, 21 октября 2023
S:=W[ii];
writeln('Ход компьютера: ', S);
end;
ii:=ii+1;
until S=W[ii-1];
until S=N;
writeln('Сасай, лалка!');
readln;
END.
</poem>
 
== Прога для варианта игры с добавлением 1 или 2 квадратов ==
<poem>
Program WisestProf;
var N, x, y, i, k, l, ww, diff, fs, first, h, S, ii, hod: integer;
W: array[1..10000] of integer;
label Net, No, Nicht;
 
BEGIN
writeln('Добро пожаловать в "Просто добавь квадрат"! Прибавлять можно только квадраты натуральных чисел и писать сразу сумму (на первом ходу это просто квадрат). Выиграет тот, кто составит сумму, равную победному числу. Составлять сумму, превышающую это число, запрещено.');
Net:
write('Назови победное число (НЕ квадрат натурального): ');
readln(N);
for x:=1 to trunc(sqrt(N) do
for y:=0 to x do if x*x+y*y=N then
begin
writeln('Давай по новой, Миша, число хуйня');
goto Net;
end;
 
W[1]:=N;
S:=0;
i:=1;
ww:=N;
 
for k:=1 to N-1 do
begin
diff:=0;
ww:=ww-1;
l:=1;
repeat
for x:=1 to trunc(sqrt(N) do
for y:=0 to x do if x*x+y*y=W[l]-ww then diff:=1;
l:=l+1;
until (diff=1) or (l>i);
 
If diff=0 then
begin
i:=i+1;
W[i]:=ww;
end;
end;
 
fs:=1;
first:=0;
 
repeat
for x:=1 to trunc(sqrt(N) do
for y:=0 to x do if x*x+y*y=W[fs] then if first=0 then
begin
writeln('Компьютер ходит первым.');
S:=W[fs];
writeln( 'Ход компьютера: ', x*x, '+', y*y, '=', S);
first:=1;
end;
fs:=fs+1;
until (first=1) or (fs>i);
 
repeat
No:
write('Твой ход, первый квадрат: ');
readln(h);
if (h>0) and (round(sqrt(h))=sqrt(h)) and (S+h<N) then S:=S+h else
begin
writeln('Ты неправильно походил, мудила!');
goto No;
end;
 
Nicht:
write ('Твой ход, второй квадрат или 0: ');
readln(h);
if (round(sqrt(h))=sqrt(h)) and (S+h<N) then S:=S+h else
begin
writeln('Ты неправильно походил, мудила!');
goto Nicht;
end;
 
writeln('Сумма после твоего хода: ', S);
 
ii:=1;
hod:=0;
 
repeat
for x:=1 to trunc(sqrt(N) do
for y:=0 to x do if S+x*x+y*y=W[ii] then if S<>W[ii] then if hod=0
begin
writeln( 'Ход компьютера: ', S, '+', x*x, '+', y*y, '=', W[ii]);
S:=W[ii];
end;
ii:=ii+1;
Администратор, редактор
307
правок