197 (игра) — различия между версиями
Проф (обсуждение | вклад) |
(→Игра с компьютером) |
||
(не показано 6 промежуточных версий 2 участников) | |||
Строка 10: | Строка 10: | ||
== Игра с компьютером == | == Игра с компьютером == | ||
Мудрейшему Профу удалось написать сильнейшую компьютерную программу для этой игры. Для игры достаточно установить Паскаль и вбить следующий код: | Мудрейшему Профу удалось написать сильнейшую компьютерную программу для этой игры. Для игры достаточно установить Паскаль и вбить следующий код: | ||
− | var h, S, i, c: integer; W: array[1.. | + | var h, S, i, c: integer; W: array[1..19] of integer; |
label No; | label No; | ||
begin | begin | ||
writeln('Добро пожаловать в "197"! Первым ходом пишешь квадрат натурального числа, потом сразу сумму.'); | writeln('Добро пожаловать в "197"! Первым ходом пишешь квадрат натурального числа, потом сразу сумму.'); | ||
S:=0; | S:=0; | ||
− | W[1]:= | + | W[1]:=125; W[2]:=130; W[3]:=132; W[4]:=135; W[5]:=140; W[6]:=145; W[7]:=153; |
− | + | W[8]:=158; W[9]:=163; W[10]:=175; W[11]:=177; W[12]:=180; W[13]:=182; W[14]:=185; | |
− | W[ | + | W[15]:=187; W[16]:=190; W[17]:=192; W[18]:=195; W[19]:=197; |
− | + | ||
− | + | ||
− | + | ||
repeat | repeat | ||
No: | No: | ||
write('Твой ход: '); | write('Твой ход: '); | ||
readln(h); | readln(h); | ||
− | if (round(sqrt(h-S))=sqrt(h-S)) and (h<197) then S:=h else | + | if (h>S) and (round(sqrt(abs(h-S)))=sqrt(abs(h-S))) and (h<197) then S:=h else |
begin | begin | ||
writeln('Ты неправильно походил, мудила!'); | writeln('Ты неправильно походил, мудила!'); | ||
goto No; | goto No; | ||
end; | end; | ||
− | i:= | + | i:=20; |
repeat | repeat | ||
i:=i-1; | i:=i-1; | ||
Строка 40: | Строка 37: | ||
until S=W[i]; | until S=W[i]; | ||
until S=197; | until S=197; | ||
+ | writeln('Сасай, лалка!'); | ||
+ | readln; | ||
+ | end. | ||
+ | |||
+ | == Версия игры «Маятник Профа» == | ||
+ | Здесь игроки не вправе выбирать модуль квадрата, которым следует походить — выбирается лишь знак. Натуральное число, возводимое во вторую степень, соответствует номеру хода. Исходное число — 100, заходить в «минус» запрещено. Побеждает тот, кто назовёт 197 или больше. | ||
+ | |||
+ | === Сильнейшая программа === | ||
+ | var S, n: integer; zn: char; | ||
+ | begin | ||
+ | S:=100; | ||
+ | n:=0; | ||
+ | writeln('Добро пожаловать на "Маятник Профа"!'); | ||
+ | writeln('Твоя задача нажимать только + или -.'); | ||
+ | writeln('Игра в пределах неотрицательных чисел,'); | ||
+ | writeln('поэтому в некоторых случаях у тебя не будет выбора.'); | ||
+ | writeln('Для победы нужно получить 197 или более. Исходное число - 100.'); | ||
+ | writeln('Компьютер ходит первым.'); | ||
+ | repeat | ||
+ | n:=n+1; | ||
+ | if n=5 | ||
+ | then if S<=91 then S:=S-25 else S:=S+25 | ||
+ | else if (S-n*n<0) or (S+n*n>=197) then S:=S+n*n else S:=S-n*n; | ||
+ | writeln('Ход компьютера: ',S); | ||
+ | if S<197 then | ||
+ | begin | ||
+ | n:=n+1; | ||
+ | if S>=n*n then | ||
+ | begin | ||
+ | write('Твой ход (+/-',n*n,'): '); | ||
+ | readln(zn); | ||
+ | if zn='+' then S:=S+n*n else S:=S-n*n; | ||
+ | end | ||
+ | else S:=S+n*n; | ||
+ | writeln('Твой ход: ',S); | ||
+ | end; | ||
+ | until S>=197; | ||
writeln('Сасай, лалка!'); | writeln('Сасай, лалка!'); | ||
readln; | readln; | ||
Строка 45: | Строка 79: | ||
[[Категория:Игры]] | [[Категория:Игры]] | ||
+ | [[Категория:Проф одобряет]] |
Текущая версия на 14:09, 18 октября 2023
197 — гениальнейшая игра, придуманная не менее гениальным Профом. Играют двое. Первый называет квадрат какого-либо натурального числа, второй добавляет к нему ещё один квадрат натурального числа и называет сумму, и т. д. по очереди. У кого получится число 197 — тот и побеждает. Называть число, большее 197, запрещено.
Анализ
При кажущейся простоте игра изобилует множеством вариантов, поэтому просчитать в уме все ходы наперёд могут только люди с IQ=197 и выше. Однако известно, что при наилучшей игре обоих игроков всегда победит второй, поскольку среди множества чисел, ведущих шаг за шагом к победе, нет ни одного квадрата. Например, последние 3 «победных» числа — это 190, 192 и 195. Назвавший одно из них или другое такое число гарантирует себе победу вне зависимости от того, как будет ходить его противник:
- …190 → 191 → 195 → 196 → 197
- …190 → 194 → 195 → 196 → 197
Для пущего интереса можно усложнить игру, запретив, например, называть два одинаковых квадрата подряд. В любом случае играть в «197» — одно удовольствие для истинных интеллектуалов.
Игра с компьютером
Мудрейшему Профу удалось написать сильнейшую компьютерную программу для этой игры. Для игры достаточно установить Паскаль и вбить следующий код:
var h, S, i, c: integer; W: array[1..19] of integer; label No; begin writeln('Добро пожаловать в "197"! Первым ходом пишешь квадрат натурального числа, потом сразу сумму.'); S:=0; W[1]:=125; W[2]:=130; W[3]:=132; W[4]:=135; W[5]:=140; W[6]:=145; W[7]:=153; W[8]:=158; W[9]:=163; W[10]:=175; W[11]:=177; W[12]:=180; W[13]:=182; W[14]:=185; W[15]:=187; W[16]:=190; W[17]:=192; W[18]:=195; W[19]:=197; repeat No: write('Твой ход: '); readln(h); if (h>S) and (round(sqrt(abs(h-S)))=sqrt(abs(h-S))) and (h<197) then S:=h else begin writeln('Ты неправильно походил, мудила!'); goto No; end; i:=20; repeat i:=i-1; for c:=1 to 14 do if S+c*c=W[i] then begin S:=W[i]; writeln('Ход компьютера: ', S); end; until S=W[i]; until S=197; writeln('Сасай, лалка!'); readln; end.
Версия игры «Маятник Профа»
Здесь игроки не вправе выбирать модуль квадрата, которым следует походить — выбирается лишь знак. Натуральное число, возводимое во вторую степень, соответствует номеру хода. Исходное число — 100, заходить в «минус» запрещено. Побеждает тот, кто назовёт 197 или больше.
Сильнейшая программа
var S, n: integer; zn: char; begin S:=100; n:=0; writeln('Добро пожаловать на "Маятник Профа"!'); writeln('Твоя задача нажимать только + или -.'); writeln('Игра в пределах неотрицательных чисел,'); writeln('поэтому в некоторых случаях у тебя не будет выбора.'); writeln('Для победы нужно получить 197 или более. Исходное число - 100.'); writeln('Компьютер ходит первым.'); repeat n:=n+1; if n=5 then if S<=91 then S:=S-25 else S:=S+25 else if (S-n*n<0) or (S+n*n>=197) then S:=S+n*n else S:=S-n*n; writeln('Ход компьютера: ',S); if S<197 then begin n:=n+1; if S>=n*n then begin write('Твой ход (+/-',n*n,'): '); readln(zn); if zn='+' then S:=S+n*n else S:=S-n*n; end else S:=S+n*n; writeln('Твой ход: ',S); end; until S>=197; writeln('Сасай, лалка!'); readln; end.