197 (игра)

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

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.