Изменения

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

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

2792 байта добавлено, 19:08, 3 ноября 2023
Отмена правки 122349, сделанной участником [[Special:Contribs/Гроссмейстер Проф|Гроссмейстер Проф]] ([[User talk:Гроссмейстер Проф|обс.]])
== Прога для общего случая ==
<poem>
Program Wisest ProfWisestProf;
var N, i, k, l, ww, diff, fs, first, h, S, ii, c: integer;
W: array[1..i10000] of integer;
label Net, No;
BEGIN
writeln('Добро пожаловать в "Просто добавь квадрат"! Прибавлять можно только квадраты натуральных чисел и писать сразу сумму (на первом ходу это просто квадрат). Выиграет тот, кто составит сумму, равную победному числу. Составлять сумму, превышающую это число, запрещено.');
repeat
Net:
write('Назови победное число (НЕ квадрат натурального): ');
goto Net;
end;
until true;
S:=0;
i:=1;
ww:=N;
for k:=1 to N-1 do
begin
diff:=0;
ww:=Nww-k1; l:=1;
repeat
if round(sqrt(W[l]-ww))=sqrt(W[l]-ww) then diff:=1;
fs:=1;
first:=0;
repeat
S:=W[fs];
writeln('Ход компьютера: ', S);
first=1; fs:=fs+1;
end;
fs:=fs+1;
until (first=1) or (fs>i);
end;
ii:=ii+1;
until S=W[ii-1];until S=N;writeln('Сасай, лалка!');readln;END.</poem> == Прога для варианта игры с добавлением 1 или 2 квадратов с лимитом сверху ==<poem>Program WisestProf;var lim, N, x, y, i, k, l, ww, diff, fs, first, h, S, ii, hod: integer; W: array[1..10000] of integer;label Ni, Net, No, Nicht; BEGINwriteln('Добро пожаловать в "Просто добавь 1 или 2 квадрата"! Вводить можно только квадраты натуральных чисел. Выиграет тот, кто составит сумму, равную победному числу. Составлять сумму, превышающую это число, запрещено.'); Ni:write('Выбери максимальный допустимый квадрат натурального числа: ');readln(lim);if (round(sqrt(lim))<>sqrt(lim)) or (lim=0) then begin writeln('Это не квадрат натурального, придурок!'); goto Ni; end;  Net: write('Назови победное число (которого нельзя достичь за 1 ход): '); readln(N); for x:=1 to round(sqrt(lim)) do for y:=0 to x do if (x*x+y*y=N) or (N<lim) 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 round(sqrt(lim)) 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; repeatfor x:=1 to round(sqrt(lim)) dofor 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); repeatNo:write('Твой ход, первый квадрат: ');readln(h);if (h>0) and (h<=lim) 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 (h<=lim) and (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 round(sqrt(lim)) do for y:=0 to x do if S+x*x+y*y=W[ii] then if hod=0 then begin writeln( 'Ход компьютера: ', S, '+', x*x, '+', y*y, '=', W[ii]); S:=W[ii]; hod:=1; end; ii:=ii+1; until S=W[ii-1];
until S=N;
writeln('Сасай, лалка!');
Администратор, редактор
307
правок