Давайте на примере аукциона с тремя двойками, в который мы играли полторы недели назад, попробуем понять, как нужно анализировать игры.
Шаг первый — учимся делать хоть какой-то ход. В нашем случае всё просто: нужно было придумать какую-нибудь последовательность действий над тремя цифрами 2, чтобы получить натуральное число, которое ранее не было записано другими участниками аукциона.
Получается, что надо пробовать применять разные действия к трём двойкам, проверяя, не получили ли мы новое натуральное число. Если получили, то запоминаем его себе в отдельную табличку. Как только у нас запасено несколько никем не названных натуральных чисел (т.е. мы готовы сделать один из нескольких ходов), стоит начать изучение других подходов к игре.
Если бы мы учились играть в шахматы, то сначала следовало бы понять, как можно двигать фигуры. Этого, конечно, недостаточно для победы над сколько-нибудь серьёзным человеком, но без этого вообще невозможно играть.
Шаг второй — учимся делать ход в любом случае. В первые секунды может показаться, что набор натуральных чисел, которые можно получить из трёх двоек, очень ограничен (так как все функции из двух чисел делают одно, а изначально у нас всего три числа, то и вариантов получается не так много). Но тут мы можем вспомнить, что бывают унарные функции, которые одно число преобразовывают в другое. Например, есть функция факториал, которую можно применять неограниченное число раз.
Наличие унарных функций существенно меняет смысл игры. Если раньше надо было искать такие наборы действий, которые приводят к новому натуральному числу, то теперь достаточно взять самый большой результат конкурентов, после чего просто «наехать» на него факториалом. Получится натуральное число, которое ранее заведомо никто не получал.
Тут, правда, проявляется забавное ограничение: в правилах чётко сказано, что надо предъявить полученное натуральное число, если хочется сделать ход. Поэтому, например, ход (222)! невозможен (так как в его записи почти 26 миллионов цифр, а такие длинные комментарии недопустимы на этом блоге). Но если говорить о строгой математической постановке, то, конечно, подход, например, с факториалами, полностью уничтожает аукцион.
Остаётся искусственно усложнить игру — научиться получать любое натуральное число (или понять, какие натуральные числа невозможно получить из трёх двоек). Ранее мы уже поняли, что если пользоваться только функциями от двух аргументов, то удастся получить натуральные числа из очень ограниченного набора. Это значит, что для получения произвольного натурального числа придётся применять произвольное число раз функции одного аргумента. А какие такие функции знает школьник? Перечислим их:
- Факториал,
- Квадратный корень,
- sin, cos, tg, ctg,
- arcsin, arccos, arctg, arcctg.
sqrt(sqrt(...(sqrt(2)...)) = 2^(1/(2^N)) (т.е. корень из двойки 2N степени).
Что можно сделать с таким числом? Сразу чешутся руки применить к нему функцию log. Только как это лучше сделать? Можно взять логарифм по этому дикому основанию от двойки. Напомню, что логарифм числа b по основанию a определяется как показатель степени, в которую надо возвести основание a, чтобы получить число b.
Другими словами, из двух двоек, логарифма и N операций корня мы можем накрутить уже достаточно интересную конструкцию. Сколько корней мы поместим в основание логарифма, такую степень двойки и получим. Удобно? Не то слово! Из двух двоек мы научились получать 2N (для произвольного натурального N).Это уже очень хорошо. Но можно попробовать продвинуться дальше — попробовать вытащить из 2N само число N. У нас же ещё осталась одна двойка, а логарифмом мы пользоваться не разучились, верно? Поэтому давайте «наедем» на это число 2N функцией логарифм по основанию 2. Она как раз и вернёт нам N. Получается, что мы можем из трёх двоек, двух логарифмов и N квадратных корней получить произвольное натуральное число N.
Эту задачу о трёх двойках называют задачей Дирака (он предлагал именно решение с парой логарифмов). Но многие справедливо возражают, что функция извлечения квадратного корня неявно использует ещё одну двойку для указания степени, поэтому данное решение хоть и изящно, но не кажется очень уж корректным.
Можно ли решить эту же задачу без использования квадратных корней? Да, можно! И мы рассмотрим это решение в следующей заметке.
Но вернёмся к формулировкам, кажущимся абсурдными. Есть интересный класс задач-диалогов. От решающего требуется не столько знание азов школьной математики, сколько умение осознать, что и в какой момент знает каждый из участников разговора. Поскольку знания эти во время беседы меняются, то и в смысл последующих фраз не так легко сразу вникнуть.
В нынешнем мире, к сожалению, принято ехидно спрашивать, что же курил автор задачки, когда сочинял такой нелепый диалог. Но если отвлечься от кажущейся абсурдности беседы (вместо прямого ответа на вопрос о возрасте даются какие-то намёки, зачем-то сообщается сходство одного из детей с матерью и так далее), то и тут найдётся математическая составляющая.
Как они могут быть осмысленными? Да легко! Помните, например, как в фильме «Терминатор 2» отрицательный герой из будущего почти мгновенно замёрз, оказавшись в луже жидкого азота? Умом мы прекрасно понимаем, что гораздо эффективнее было бы забирать тепло обычной водой, а не азотом. Но тем же умом мы осознаём, что с водой такой трюк не пройдёт. Ну не будет злой робот из будущего крошиться на льдинки, попав в воду. А с жидким азотом вроде более правдоподобно, хоть тоже нереалистично (любой человек, поигравший в детстве с термосом азота или