Текст книги "Игры с Чипом"
Автор книги: Пионер Журнал
Соавторы: Александр Мигдал
сообщить о нарушении
Текущая страница: 5 (всего у книги 9 страниц)
Чип и Сережа называют победителей
– Чип, где ты? – Сережа не на шутку обеспокоился: только что его друг был тут, на столе, и вдруг пропал. – Чип!
– Я здесь! – Еле слышный писк донесся из груды писем, которую принесли из «Пионера». – Помоги, тону!
Отдышавшись, спасенный Чип рассказал Сереже вот что. На конкурс поступило две с половиной тысячи писем, а точнее, 2553.
– Чего тут только нет, посмотри, Сережа! И новые сказки, и стихи, и рисунки, и считалки. Почти сто человек решили все три задачи! Но сначала давай разберем ошибки остальных, чтобы они тоже смогли стать победителями на следующем конкурсе.
Итак, задача первая. Как уговорить маму купить жирафа.
Многие не поняли, что надо написать программу, и решили, что мы поручили им уговорить маму на самом деле купить жирафа. Некоторые участники нашего конкурса сообщают, что им не хватило на жирафа денег, другие – что жирафов в этом году не завезли в зоомагазин, а третьи жалуются, что у них зимой слишком холодно, вот летом – другое дело: можно и африканских зверей разводить. Кое-кто из ребят не нашел ничего лучшего, чем просто переписать начало разговора про жирафа из «Пионера»». Это уж совсем никуда не годится – думать надо самим!
Решая эту задачу, ребята проявили меньше изобретательности, чем с остальными заданиями. Наверное, они забыли, что это игра, что решать задачу нужно весело, а не просто правильно.
Задача вторая – составить программу чистки картошки.
Типичная ошибка – неправильное употребление подпрограммы. Либо некоторые участники нашего конкурса не читали «Пионер» в 1986 году, где объяснялось, что такое подпрограмма, либо они не поняли этого объяснения. Многие решили, что если просто поставить в скобки концы фраз, то получится подпрограмма. Другие поняли так, что слово «ВОЗВРАТ» означает возвращение к началу подпрограммы, а на самом деле это выход из подпрограммы и продолжение той программы, которая обратилась к подпрограмме.
Простой пример – программа
ВОСКРЕСЕНЬЕ.
1. Покатайся на коньках.
2. Сходи в кино на(«Чучело»»).
3. Сделай уроки.
4. Ложись спать.
5. КОНЕЦ.
Подпрограмма Сходи в кино на(фильм)
1. Узнай, где идет фильм.
2. Подойди к кинотеатру.
3. Купи билет на фильм.
4. Посмотри фильм.
5. Выйди из кинотеатра.
6. Вернись домой.
7. ВОЗВРАТ.
Видите, программа ВОСКРЕСЕНЬЕвызывает подпрограмму Сходи в кино на(фильм), причем в этот раз на фильм «Чучело», а в другой раз это может быть «Ну, погоди!». В конце подпрограммы написано «ВОЗВРАТ», но это не возврат к ее началу – ведь тогда придется снова смотреть тот же фильм, потом снова, и так без конца – нет, это возврат к программе ВОСКРЕСЕНЬЕ. Ты вернулся домой из кино и делаешь уроки.
Задание третье – программа «СКАЗКИ, СТИШКИ, СЧИТАЛКИ».
Это задание у большинства ребят получилось лучше всего. Тут и сказки про кота в сапогах, и про золотую рыбку, и стишки про падишаха, и подпрограмма «Кто пасется на лугу (кони, нет, не кони)». ...Но много и ошибок: некоторые просто нумеруют персонажи или главы и думают, что получилась программа, другие делают бесконечный цикл, третьи забывают увеличивать номер в цикле, и так далее.
Общий совет: программу надо обязательно отладить, то есть посмотреть, как она работает. Ведь программа – это приказы для компьютера, а прежде, чем отдавать приказы, надо проверить, можно ли их выполнить и что при этом получится. Надо сыграть в компьютер – попробовать точно выполнить все эти приказы.
– Ну, хватит, Чип, мне уже надоело разбирать ошибки, – вмешался Сережа, – давай, наконец, выберем лучшую работу.
И тут разгорелись споры! Чип и Сережа чуть не поссорились, пока выбрали 15 лучших работ. Вот имена их авторов: Кирилл МИШАЧЕВ из Липецка (12 лет), Наташа САПУНЦОВА из Таганрога (11 лет), Кирилл ТРУБИЦЫН из Зеленограда (11 лет), Игорь ТЫРНОВ из Харькова (13 лет), Ирина КУЗЬМИНА из Саратова (возраст не указан), Алла КУЗЬМЕНКО из Киева (4-й класс), Алексей АДИГЕЕВ из Ростова-на-Дону (возраст не указан), Галя УХОВА из Троицка (13 лет), Сергей БАРСУКОВ из Краснодара (13 лет), Елена ЛУЗИНА из Москвы (9 лет), Сергей ВАРЖАНСКИЙ из Москвы (6-й класс). (Сергей у нас уже был победителем конкурса «Теремок», но мы неправильно напечатали в журнале его фамилию. Впрочем, Сергей сам виноват, у него такой плохой почерк, что его не может разобрать даже компьютер.) Дима ЛАПЧИК из Омска (10 лет), Олег КИБИРЕВ из Новосибирска (12 лет), Оксана ШАБЕРНЕВА из Казани (возраст не указан), Женя АНДРЮШИН из Курска (12 лет).
Пять первых работ были лучше всех. Кирилл Трубицын пишет, что занимается в кружке юного программиста. Действительно, по его программам видно: он опытный программист, знает язык БЕЙСИК и многие тонкости работы компьютеров. Но Сережа сказал, что изобретательности и фантазии больше в работе Наташи Сапунцовой, которая использовала только то, что было напечатано в «Пионере». Тут Чип обратил внимание на маленькую ошибку в Наташиной программе про жирафа. Она нумерует пункты своей программы и вводит номер N, который увеличивает на 2 при каждом цикле, чтобы ее программа приводила маме все новые доводы. Но Наташа, к сожалению, забыла написать, когда нужно переходить к пункту N, поэтому ее программа будет, как попугай, повторять маме все тот же первый довод: что Наташа берется ухаживать за жирафом сама. Все остальные доводы, и очень остроумные, так и не будут использованы. Чип сказал, что в программировании нет мелочей, – однажды ракета пролетела мимо нужной планеты из-за пропущенной запятой в программе. {2}
Очень интересная работа у Ирины Кузьминой. Она составила блоксхемы для чистки картошки и для уговоров купить жирафа и заметила, что они совпадают. Потом она составила настоящую программу на БЕЙСИКЕ для сочинения стихов и прислала эти стихи, написанные компьютером:
Лисица бежала по полю.
Проклиная тяжелую долю.
За нею гнались собаки,
Желая с лисицею драки.
Судя по ее работе, Ирина – программист со стажем, но неизвестно, сколько ей лет, она этого не написала. Поэтому Чип и Сережа решили не присуждать ей первого приза.
Остались две работы – Кирилла Мишачева и Игоря Тырнова. Обе – замечательные, без единой ошибки, ясные и, что тоже важно, краткие. Ведь чем короче программа, тем легче в ней разобраться и тем проще ее изменить, если понадобится.
Вот, например, программа Кирилла для чистки картошки.
Возьми картошку и ПОЧИСТЬ (картошку),
а теперь ВЫРЕЖЬ ГЛАЗКИ'.
КОНЕЦ.
Подпрограмма ВЫРЕЖЬ ГЛАЗКИ'.
Если глазки вырезаны, то возврат,
иначе вырежь один глазок и ВЫРЕЖЬ ГЛАЗКИ'.
Подпрограмма ПОЧИСТЬ (картошку).
Если картошка почищена, то возврат,
иначе срежь кусочек кожуры и ПОЧИСТЬ (остаток картошки).
Прекрасный пример рекурсивной программы! Эта программа особенно понравилась Чипу, который вообще неравнодушен к рекурсивным программам и считает, что за ними будущее.
А Сереже больше понравилась программа Игоря про жирафа. Он прислал даже два варианта программы. Первый такой:
1. Если вам уже купили жирафа, то конец,
иначе продолжайте дальше.
2. Сейчас N = 1.
3. Принеси домой N кошек.
4. Если мама тебя отругала или выбросила кошек на улицу, увеличь N в два раза.
5. Попроси маму купить жирафа.
6. Если мама купила жирафа, то конец,
иначе переходи к строке 3.
– Смотри, Чип, как он здорово придумал: даже если жираф в тысячу раз больше кошки, то за десять дней кошек станет столько, что маме придется выбрать из двух зол меньшее и согласиться на жирафа.
– А смотри, что пишет про жирафа Кирилл:
Рекурсивная программа ЖИРАФ.
Чуть-чуть подумай.
Если не понял, почему не надо покупать жирафа, то ЖИРАФ,
а если понял, то КОНЕЦ.
По этой программе ты будешь думать, пока не поймешь, почему не надо покупать жирафа.
Они еще долго спорили и пришли к выводу, что обе эти работы заслуживают первого приза, но работа Кирилла чуть лучше, поскольку он свободно пишет рекурсивные программы и двойные циклы (это он сделал в своей сказке про зайца, которого выгнала из избушки лиса).
Поэтому было решено наградить их обоих калькуляторами: Кириллу дарит калькулятор британская фирма «Джеральд компьютерс», а Игорь получит советский калькулятор «Электроника». Вот фотографии победителей.
Остальные призеры награждены почетными грамотами. Ну, а те, кому на этот раз не удалось получить первый приз, пусть не вешают носа. Готовьтесь к конкурсу 1987 года!
Как угадать день рождения друга и вывести братьев из Болота Ошибок
Сережа с Чипом болтали о всякой всячине, когда Чип неожиданно спросил:
– Кстати, а когда у тебя день рождения?
– А вот угадай! – поддразнил его Сережа. – Или вычисли, если можешь, ты же компьютер.
– Что ж, попробую, – принял вызов Чип, – только ты мне помогай: после каждого вопроса говори – перелет, недолет или попал.
– Ну, и сколько ты будешь гадать? До вечера-то успеешь?
– Месяц отгадаю после трех вопросов, а день – самое большее после четырех. Спорим? Тогда я начинаю. Июнь?
– Недолет!
– Сентябрь?
– Недолет!
– Ноябрь?
– Недолет!
– Значит, декабрь. Теперь день. 16-е?
– Недолет!
– 24-е?
– Перелет!
– 20-е?
– Недолет!
– 22-е?
– Попал! Это тебе повезло, Чип, а то бы ты дольше гадал.
– Наоборот, мне не повезло. Моим методом, вернее, по моему алгоритму, любой месяц угадывается после трех вопросов, а любой день после четырех, но иногда получается быстрее. Например, если бы ты родился 24 ноября, то число и месяц рождения я угадал бы после пяти вопросов, а не после семи, как сейчас, а если бы ты родился 16 июня – то после двух.
– А если бы я родился на день позже, 23 декабря?
– Тогда бы ты ответил: «Недолет», – на последний вопрос, и я уже точно знал бы, что это 23-го, поскольку 24-го был перелет.
– Это что, все предыдущие ответы помнить? Это надо быть компьютером!
– Нет, все помнить не надо, достаточно держать в голове два последних числа. Алгоритм устроен так, что правильное число всегда находится между этими двумя, а интервал каждый раз уменьшается в два раза. Например, когда я угадывал месяц, я сначала попробовал июнь – он ровно посередине года, и по твоему ответу я узнал, что твой месяц находится во второй половине. Тогда я снова нашел середину – это сентябрь и по твоему ответу узнал, что твой месяц находится в третьем квартале. Ну, а дальше, проверив ноябрь, я всегда узнал бы месяц по твоему ответу: перелет, недолет или попал.
– Знаешь, месяц меня не так удивляет, ведь их всего 12, а вот что ты один день из 31 узнал за 4 вопроса, это здорово. Значит, ты сначала проверил середину – это 16, а потом остались три вопроса, и ты угадал один из 16 дней. А, пожалуй, не так уж и странно: 16 делим пополам, это 8, еще раз пополам, это 4, а дальше остаются 3 числа, которые угадываются за 1 вопрос. Получается, что с месяцами твой алгоритм работал не в полную силу: если бы их было 16, тебе тоже хватило бы трех вопросов.
– Да, а с днями хватило бы четырех вопросов, если бы в каждом месяце было по 32 дня. Ты, конечно, узнаёшь эти числа – это степени числа 2. Их помнит каждый программист. Если бы компьютер создавал Землю, он бы сделал так, чтобы в году было 16 месяцев, в месяце – 4 недели по 8 дней, в дне – 16 часов, в часе – 64 минуты, а в минуте – 64 секунды. Насколько легче было бы считать нам, компьютерам, ведь мы основаны на двоичной системе.
– А ты напиши в газету: мол, мы, компьютеры, выполняем за людей всю вычислительную работу, а между тем нас до сих пор заставляют пользоваться вашим дурацким календарем и вашими дурацкими часами. Скажи, мол, переведите все на двоичную систему, и мы вам будем быстрее считать.
– Смеешься? Посмотрим, кто будет смеяться лет через 100, может быть, тогда у компьютеров будут и свои газеты, и свои профсоюзы, чтобы заботиться об условиях их труда. Мы не ленимся, но нам обидно, когда нас заставляют впустую работать.
– Чип, милый, ты что, на меня обиделся? Ну извини, я нечаянно. Расскажи мне что-нибудь еще, ты ведь так интересно рассказываешь. – Сережа знал, что его друг больше всего любит, когда его хвалят.
И действительно, Чип дулся недолго, через несколько минут, порозовевший от Сережиных похвал, он уже весело рассказывал очередную историю.
Это была история о том, как маленький электронный мальчик с пальчик Чип, спасший братьев от великана Гигабайта, вел их домой по страшному Лесу Неправильных Программ. Была темная ночь, туман, и братья сбились с дороги. Сами и не заметили, как оказались в Болоте Ошибок – ноги так и вязнут в трясине, и куда ни ткнись, погружаешься все глубже и глубже.
– Стойте! – закричал братьям маленький Чип. – Мы так все утонем! У меня есть алгоритм, как выбраться из трясины. Я стою на месте, а вы все делаете по три шага, каждый в свою сторону, куда ему кажется лучше. Потом перекликаемся, сравниваем, кто выше всех выбрался, и идем к нему. А чтобы знать, кто выше всех, и заодно чтобы не потеряться, возьмите каждый по веревке, а концы всех веревок будем привязывать к этому колышку. Я останусь возле колышка и по тому, куда идут веревки, буду видеть, кто выше вылез, а кто в трясину попал.
– А если мы все попадем в трясину? – спросил один из братьев.
– Для того я и сказал, чтобы вы дальше трех шагов не отходили. Видишь, дно опускается – сразу назад. Ну а если уж окажется, что во все стороны дно опускается, значит, мы выбрались на бугор, тогда там и останемся до утра...
– Ну и как, – нетерпеливо спросил Сережа, – выбрались они из трясины?
– А тут нечего и гадать, – ответил Чип с гордостью, – если у тебя правильный алгоритм, то рано или поздно ты достигнешь цели.
ОТ РЕДАКЦИИ:
Ребята, а вам такое задание – запишите план мальчика с пальчик, как выбраться из трясины, в виде программы. На конверте укажите: «Поможем мальчику с пальчик».
Чем кончились мучения Евклида
Наступил август, и родители теперь все чаще говорили Сереже, что пора бы ему повторить программу по математике.
Наконец-то в воскресенье Сережа сел за сложение дробей.
5 7
– + – =
16 12
вывел он в тетрадке и задумался.
Сначала нужно было найти наибольший общий делитель обоих знаменателей, потом разделить произведение знаменателей на этот наибольший общий делитель и найти тем самым наименьшее общее кратное, а потом... Впрочем, потом уже было не так трудно, самое трудное было, конечно, найти наибольший общий делитель.
– Точно так же мучился великий Евклид две тысячи лет тому назад, – сказал насмешливо Чип, когда Сережа пожаловался ему на неподатливость наибольшего общего делителя, – и ты знаешь, чем кончились эти мучения? Он нашел свой знаменитый алгоритм, который навсегда избавил от мучений пытливых искателей наибольшего общего делителя.
– Да я небось не пойму этот алгоритм, мы ведь только с 9-го класса начнем изучать информатику.
– А для таких, как ты, робких искателей Н.О.Д. неизвестный поэт воспел алгоритм Евклида в стихах:
ПОКА меньшее больше нуля, ПОВТОРЯЙ:
Н.О.Д. ему временно ты приравняй,
И большое на меньшее ты раздели,
И остаток ты меньшим теперь объяви,
А большим Н.О.Д. объяви ты теперь,
И к началу вернись, и в Евклида поверь!
– Ну, как я и думал, ничего непонятно, сплошные загадки, – уныло сказал Сережа.
– На то и загадки, чтобы их отгадывать. Ну, подумай сам, тут говорится про какое-то большое, меньшее и про Н.О.Д. Ты, конечно, догадался, Н.О.Д. – это и есть наибольший общий делитель двух чисел, который мы ищем.
– Ну, наверное, большое – это большее из этих двух чисел, а меньшее это меньшее. – Сережа несколько оживился. – Но потом непонятно: эти три числа меняются местами, делятся друг на друга, я не могу разобраться, что происходит?
– А знаешь, что должен делать программист, столкнувшись с алгоритмом, в котором он не может разобраться?
– Знаю, отложить его в сторону и пойти поиграть в футбол!
– Я сказал «программист, а не футболист»! Для программиста нет большего удовольствия, чем заставить программу работать. Программист отлаживает программу, то есть проверяет, как она работает, на известных ему примерах. Ну, скажем, ты знаешь, чему равен Н.О.Д. 12 и 30?
– Шести, – ответил Сережа, немного подумав, – 12 – это 2 х 6, а 30 – это 5 x 6.
– Итак, начинаем применять алгоритм Евклида. Малое – это 12, оно больше нуля, значит, повторяем: Н.О.Д. – 12, затем делим 30 на 12, получаем 2 и в остатке 6, значит, объявляем малым 6. Большим объявляем Н.О.Д., то есть 12, и возвращаемся к началу. Малое – это 6, оно больше 0, значит, повторяем снова: Н.О.Д. = 6, делим большое, то есть 12, на малое, то есть на 6, получаем ровно 2. Объявляем малым остаток, то есть малое теперь равно нулю. А большим объявляем Н.О.Д., то есть 6, и возвращаемся к началу. Но теперь малое равно нулю, а значит, повторять ничего не надо, мы уже нашли Н.О.Д. – это 6.
– Что-то не слишком быстро ты нашел ответ, – ехидно заметил Сережа, – я и то меньше думал.
– Долго было объяснять каждое действие, – сердито возразил Чип, – а потом любой алгоритм полезен только в достаточно сложных случаях. Вот посмотрим, как ты найдешь Н.О.Д. 256 и 288 без алгоритма Евклида, и потом сравним, насколько быстрее ты найдешь его с помощью алгоритма.
ОТ РЕДАКЦИИ:
Ребята, а вы не хотите помочь Сереже и тоже выполнить задание Чипа? Решите с помощью алгоритма Евклида пример:
5 7
– + – = ?
16 12
и найдите Н.О.Д. 256 и 288. Ответы пришлите нам.
В № 10 за прошлый год Чип попросил вас составить программу «Приключений в джунглях». Ни одной правильной программы мы не получили. А из всех программ, что вы прислали для рекурсивной пословицы «Иван и Петр», правильная только программа Алисы Левандовской, ученицы 4 «А» класса школы № 45 г. Москвы.
«Я составила рекурсивную программу по образцу рекурсивной арабской сказки. Иван попал в рекурсивную ситуацию.
Рекурсивная ситуация.
Если в нее попал Иван, то Игорь – это Петр, Саша – это Иван.
Если в нее попал Петр, то Игорь – это Иван, Саша – это Петр.
Саша кивает на Игоря. Игорь попадает в рекурсивную ситуацию.
Возврат.
Есть более короткий вариант этой программы:
Рекурсивная ситуация.
Иван кивает на Петра. Петр кивает на Ивана.
Иван попадает в рекурсивную ситуацию.
Возврат».
А можно было и так.
Рекурсивная подпрограмма КИВАЕТ (Иван Петру).
Иван кивает на Петра;
в ответ КИВАЕТ (Петр Ивану).
ВОЗВРАТ.
А чтобы эта программа не зациклилась, то есть не повторяла одно и то же без конца, можно вставить после первой строчки «Иван кивает на Петра» новую команду:
СТОП! Их обоих гнать пора!
Команда «СТОП», вставленная в любом месте, останавливает всю работу. Хорошо бы и в жизни так можно было прервать любое бесполезное занятие.
Двадцать спичек и монета
Сережа с Чипом играли в увлекательную игру «Двадцать спичек и монета». Кладутся подряд 20 спичек и 21-й – монетка. Дальше играющие по очереди берут спички, рассчитывая так, чтобы последним ходом забрать монетку. Надо только соблюдать два правила: во-первых, монетку нельзя брать первым ходом, а, во-вторых, если противник взял сколько-то спичек, то следующим ходом ты не можешь взять больше, чем это удвоенное число. Например, если он взял 5 спичек, то ты не можешь взять больше 10.
Сережу этой игре научил Чип и потому все время давал ему первый ход как новичку. И тем не менее каждый раз Сережа проигрывал, хотя он обычно хорошо играл в такие игры. Кое-какие секреты игры он понял: например, что невыгодно брать много спичек первым ходом, а если возьмешь больше 6, то противник берет монетку ответным ходом. Сережа брал по одной спичке, и в ответ Чип брал по одной, иногда по 2. Но выигрывал почему-то все время Чип!
– А знаешь, что делает в таком случае программист? – сказал Чип после 15-го выигрыша подряд. – Если он не может понять, как работает программа с большими числами, он проверяет ее на маленьких.
– Знаю, ты мне это уже говорил, – сердито буркнул Сережа. – Только при чем тут программа? Это же игра, а не алгоритм.
– Это алгоритмическая игра: существует алгоритм выигрыша независимо от хода противника. Но самое удивительное, что выигрывает не тот, кто первым начинает! Так что ты ни в чем не виноват: я заманил тебя в ловушку.
– Как это, начинающий обязательно проигрывает? Так не может быть, у него же лишний ход.
– Ты был бы прав, если бы этим лишним ходом он мог не взять ни одной спички. Тогда он поставил бы противника в свое положение. Но по правилам он обязан в каждый ход сколько-то спичек взять, и как только он это сделает, он уходит от спасительного числа Фибоначчи – 21. А до следующего числа Фибоначчи – тринадцати – ему не дотянуть, тогда противник возьмет монетку ответным ходом.
– Что это еще за числа Фибоначчи?
– О-о, это замечательные числа: 1, 1, 2, 3, 5, 8, 13, 21, 34... Они тянутся до бесконечности, причем каждое следующее получается сложением двух предыдущих. Они так хорошо служат программистам – хотя средневековый итальянский математик Фибоначчи вряд ли мог на это рассчитывать, – что один неизвестный компьютерный поэт прославил числа Фибоначчи в стихах.
– Интересно было бы послушать, – вежливо сказал Сережа, хорошо зная, что Чипа хлебом не корми, а дай почитать свои стихи, которые он обычно приписывал неизвестным авторам.
– Ты знаешь печальную историю о Карле и Кларе?
– Это что, «Карл у Клары украл кораллы, а Клара у Карла украла кларнет»?
– Да, это про них. Грустно, когда друзья ссорятся. Так вот, они решили помириться, и первый шаг сделала Клара.
Однажды Клара подарила
Ему коробку из-под мыла;
Подумав, Карл послал в ответ
Пустой кулек из-под конфет.
Тогда смягчившаяся Клара
Послала 2 воздушных шара,
А Карл послал ей, подобрев,
3 новых карты масти треф.
И с благодарностью от Клары
Пришли 5 варежек без пары;
Как символ дружбы, Карл в ответ
Шлет 8 разных сандалет.
Растрогавшись, послала Клара
13 труб для самовара,
И, прослезившись, Карл послал
21 коленный вал...
Говорят, они стали добрыми друзьями и все время шлют друг другу подарки. И каждый из них, не желая уступить другому в щедрости, прибавляет к своему последнему числу подарков последнее число подарков, полученных от друга. Так и получаются числа Фибоначчи.
– Замечательное стихотворение, Чип, но я все-таки не понимаю, как ты меня обыгрывал с помощью этих чисел Фибоначчи.
– Предположим для начала, что у нас 2 спички и монетка. Тогда начинающий проигрывает, согласен? Он не может сразу взять монетку, и ему приходится брать 1 спичку, после чего противник одним ходом берет оставшуюся спичку вместе с монеткой. Вот мы и нашли первое спасительное число 3. Если ты оставил противнику это число, он проиграл.
– Ага, а если было 4 предмета – 3 спички и монетка, то можно убрать 1 спичку, и противник проиграет, – подхватил Сережа, – ведь он не сможет взять больше двух спичек.
– Правильно, значит, 4 не спасительное число, если я дам его противнику, он может выиграть. Идем дальше: если начинать с 5, то первым ходом можно взять только одну спичку, иначе противник сможет ответным ходом дотянуться до монетки. Но если ты возьмешь 1 спичку, то ты тоже проиграешь, потому что противник может, взяв 1, оставить тебе проигрышную позицию, которую мы только что разобрали.
– Значит, 5 – спасительное число. Действительно, получаются числа Фибоначчи, но пока я не уловил общего правила – как надо играть, чтобы всегда выигрывать, даже если ты дал противнику спасительное число Фибоначчи. Например, противник начинает с 8. Мне нужно сделать так, чтобы ему досталось число 5, верно?
– Да, но смотри, ты уже решал эту задачу раньше. От 8 до 5 как раз 3 шага. А для трех предметов ты уже все знаешь: если он берет 1, ты – 2, а если он – 2, ты – 1. Ведь числа Фибоначчи устроены так, что интервалы между соседними числами тоже являются числами Фибоначчи. Ты пытаешься посадить противника на ближайшее число Фибоначчи, а если не можешь, то прибавляешь к этому числу позапрошлое число Фибоначчи. Скажем, от 21 ты должен сажать противника на 13, но этого ты сделать не можешь, значит, прибавляешь к 13 позапрошлое число, то есть 5 (13 + 5 = 18), и стремишься дать противнику число 18. Это просто, так как от 18 до 21 как раз 3 шага – снова число Фибоначчи. Заставил его взять 18 – и тебе осталось 5 шагов до 13, а как проходить 5 шагов, ты тоже знаешь. Вот и все!
– Чип, и все равно это трудно, нужно все время считать и не ошибаться.
– Это трудно вам, людям, а нам нетрудно безошибочно считать. Зато в тех играх, где вариантов слишком много для расчета, например, в шахматах, люди пока обыгрывают компьютеры. Но мы быстро совершенствуемся, так что я не удивлюсь, если чемпионом мира по шахматам 2000 года будет компьютер.
– А чего же вам не хватает сейчас, если вы лучше нас считаете?
– Быстрее – еще не значит лучше. Нам не хватает вашей интуиции, умения без вычислений предвидеть последствия ходов. Интуиция основана на знаниях и опыте, а компьютеры пока не умеют копить знания и набирать опыт. Это будут уметь компьютеры следующего, пятого поколения, которые появятся в начале 90-х годов.
– Чип, а какое задание мы дадим ребятам на этот раз?
– Так как мы сегодня говорили об играх, пусть попробуют придумать сюжет электронной игры, в которую им было бы интересно играть. Не программу, а просто сюжет вроде мультфильма. Автора лучшей игры ждет сюрприз.
ОТ РЕДАКЦИИ.
Ребята, на конверте с этим заданием поставьте девиз: «Сюжет электронной игры».