Обсуждение:197 (игра) — различия между версиями
ஞ (обсуждение | вклад) |
|||
| Строка 12: | Строка 12: | ||
Великая игра от великого автора. -- [[Участник:ஞ|ஞ]] ([[Обсуждение участника:ஞ|обсуждение]]) 18:22, 20 марта 2016 (UTC) | Великая игра от великого автора. -- [[Участник:ஞ|ஞ]] ([[Обсуждение участника:ஞ|обсуждение]]) 18:22, 20 марта 2016 (UTC) | ||
| + | |||
| + | == Прога для общего случая == | ||
| + | <poem> | ||
| + | Program Wisest Prof; | ||
| + | var N, i, k, l, ww, diff, fs, first, h, S, ii, c: integer; | ||
| + | W: array[1..i] of integer; | ||
| + | label Net, No; | ||
| + | |||
| + | BEGIN | ||
| + | writeln('Добро пожаловать в "Просто добавь квадрат"! Прибавлять можно только квадраты натуральных чисел и писать сразу сумму (на первом ходу это просто квадрат). Выиграет тот, кто составит сумму, равную победному числу. Составлять сумму, превышающую это число, запрещено.'); | ||
| + | repeat | ||
| + | Net: | ||
| + | write('Назови победное число (НЕ квадрат натурального): '); | ||
| + | readln(N); | ||
| + | if round(sqrt(N))<>sqrt(N) then W[1]:=N else | ||
| + | begin | ||
| + | writeln('Давай по новой, Миша, число хуйня'); | ||
| + | goto Net; | ||
| + | end; | ||
| + | |||
| + | S:=0; | ||
| + | i:=1; | ||
| + | |||
| + | for k:=1 to N-1 do | ||
| + | begin | ||
| + | diff:=0; | ||
| + | ww:=N-k; | ||
| + | l:=1 | ||
| + | repeat | ||
| + | if round(sqrt(W[l]-ww))=sqrt(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 | ||
| + | |||
| + | repeat | ||
| + | if round(sqrt(W[fs]))=sqrt(W[fs]) then | ||
| + | begin | ||
| + | writeln('Компьютер ходит первым.'); | ||
| + | S:=W[fs]; | ||
| + | writeln('Ход компьютера: ', S); | ||
| + | first=1; | ||
| + | fs:=fs+1; | ||
| + | end; | ||
| + | until (first=1) or (fs>i) | ||
| + | |||
| + | repeat | ||
| + | No: | ||
| + | write('Твой ход: '); | ||
| + | readln(h); | ||
| + | if (h>S) and (round(sqrt(abs(h-S)))=sqrt(abs(h-S))) and (h<N) then S:=h else | ||
| + | begin | ||
| + | writeln('Ты неправильно походил, мудила!'); | ||
| + | goto No; | ||
| + | end; | ||
| + | |||
| + | ii:=1; | ||
| + | repeat | ||
| + | for c:=1 to round(sqrt((N))) do if S+c*c=W[ii] then | ||
| + | begin | ||
| + | S:=W[ii]; | ||
| + | writeln('Ход компьютера: ', S); | ||
| + | end; | ||
| + | ii:=ii+1; | ||
| + | until S=W[ii]; | ||
| + | until S=N; | ||
| + | writeln('Сасай, лалка!'); | ||
| + | readln; | ||
| + | END. | ||
| + | </poem> | ||
Версия 16:36, 18 октября 2023
ты голову то пожалей такое шедевр писать --пидарасина 16:00, 15 марта 2016 (UTC)
Проф, вам надо придумать математический анализ игр, однозначно
Отличная игра, в нее имеет смысл играть как можно больше. Komandante (обсуждение) 17:56, 18 марта 2016 (UTC)
- Спасибо, постараюсь придумать ещё подобные игры. А матан и у Логика из Самары неплохо получается. Проф (обсуждение) 07:00, 19 марта 2016 (UTC)
- Отлично! Кстати, вы там писали, что считаете очень профоугодной игру Hearthstone, а что вы думаете об игре, от которой это все пошло - то есть magic the gathering? Играли? Komandante (обсуждение) 10:27, 19 марта 2016 (UTC)
- Не, у меня в этом плане синдром утёнка. Проф (обсуждение) 07:35, 20 марта 2016 (UTC)
- Отлично! Кстати, вы там писали, что считаете очень профоугодной игру Hearthstone, а что вы думаете об игре, от которой это все пошло - то есть magic the gathering? Играли? Komandante (обсуждение) 10:27, 19 марта 2016 (UTC)
Кстати, в вашей программе компьютер всегда выигрывает... Вот ведь подлый робот. Komandante (обсуждение) 10:28, 19 марта 2016 (UTC)
- Ну не зря же я вручную просчитал все 50 млрд. возможных вариантов для этого. Проф (обсуждение) 07:35, 20 марта 2016 (UTC)
Великая игра от великого автора. -- ஞ (обсуждение) 18:22, 20 марта 2016 (UTC)
Прога для общего случая
Program Wisest Prof;
var N, i, k, l, ww, diff, fs, first, h, S, ii, c: integer;
W: array[1..i] of integer;
label Net, No;
BEGIN
writeln('Добро пожаловать в "Просто добавь квадрат"! Прибавлять можно только квадраты натуральных чисел и писать сразу сумму (на первом ходу это просто квадрат). Выиграет тот, кто составит сумму, равную победному числу. Составлять сумму, превышающую это число, запрещено.');
repeat
Net:
write('Назови победное число (НЕ квадрат натурального): ');
readln(N);
if round(sqrt(N))<>sqrt(N) then W[1]:=N else
begin
writeln('Давай по новой, Миша, число хуйня');
goto Net;
end;
S:=0;
i:=1;
for k:=1 to N-1 do
begin
diff:=0;
ww:=N-k;
l:=1
repeat
if round(sqrt(W[l]-ww))=sqrt(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
repeat
if round(sqrt(W[fs]))=sqrt(W[fs]) then
begin
writeln('Компьютер ходит первым.');
S:=W[fs];
writeln('Ход компьютера: ', S);
first=1;
fs:=fs+1;
end;
until (first=1) or (fs>i)
repeat
No:
write('Твой ход: ');
readln(h);
if (h>S) and (round(sqrt(abs(h-S)))=sqrt(abs(h-S))) and (h<N) then S:=h else
begin
writeln('Ты неправильно походил, мудила!');
goto No;
end;
ii:=1;
repeat
for c:=1 to round(sqrt((N))) do if S+c*c=W[ii] then
begin
S:=W[ii];
writeln('Ход компьютера: ', S);
end;
ii:=ii+1;
until S=W[ii];
until S=N;
writeln('Сасай, лалка!');
readln;
END.