Сделаем шаг в другую жизнь
26 января 2005
Рубрика: Обзоры и мнения.
Автор: .
pic
Итак, с чего же мы начнем,
мистер Сайрес? —
спросил Пенкроф на следующее утро.
С самого начала, —
ответил Сайрес Смит.
Жюль Верн. Таинственный остров.

Занимательная информатика

Часть тиража журнала распространяется среди школ и колледжей, поэтому хочется немного повернуть его (журнал) лицом к школьникам и студентам. Постепенно начинаем. Обращаюсь к студентам, школьникам, а также пенсионерам, велосипедистам и брюнетам: «Пишите программы!» Вовсе не потому, что написание программ было первичной и основной функцией компьютеров, а нынче хлынувшая к клавиатурам толпа использует их как угодно, но только не для программирования. И даже не потому, что писать программы очень приятно. (Вообще работа на компьютере вызывает положительные эмоции. Психологи пометили такой эффект: человеку приятно даже просто нажимать на клавиши, не говоря уже о тыканьи мышкой в яркие кнопки.)

И не потому также, что это общение с компьютером, с языком программирования с умным, остроумным, язвительным, вредным и одновременно дружелюбным собеседником. И не потому, что любые манипуляции с компьютером — даже набор текста и укладывание цветных шариков как форма общения спасает нас, возможно, от шизофрении и разряжает агрессию. А потому, что написание программ с головоломками и математическими картинками — это волшебное интереснейшее времяпрепровождение, прикосновение к тайнам устройства мира. Даже еще круче — это настоящая, захватывающая полноценная жизнь, а все, что вне ее — блеклое и неказистое ожидание старости.
И неважно, с чего начинать. Найдите и установите какой-нибудь Бейсик (можно Turbo Basic, можно Qbasic — есть русифицированный, можно для экзотики древний GWBasic, лучше, конечно, Visual Basic) или Borland Pascal, или Delphi, или С++, или даже C#. Начните, сделайте хоть что-нибудь. Постепенно вы попадете под магическое действие особой внутренней пружины: «А что, если что-то поменять?» И попробуйте, поменяйте. Ваши опыты — это лучшее применение для вашего компьютера. Ваши опыты, даже самые простенькие, увеличивают сумму знаний всего человечества, если это для вас важно. Если нет, все равно, показывая полученные интересные результаты, вы вовлечете в программирование хотя бы одного из сотни знакомых, тот еще кого-нибудь, это не менее достойно, чем посадить дерево. Те, кого волнует практическое применение, обязательно найдут, что можно поручить компьютеру из своих хлопот — личных, на работе, в учебе, дома — везде. А те, кому важнее получить ответы на интересные отвлеченные вопросы (например, количество счастливых билетов или уравнение цветка сирени), получат пропуск в сказочную страну прекрасной бесполезной информации.

Мир безвозвратно разделился на две части. Первая, надо полагать (читающие эти строки), будет всю ночь рисовать фракталы, крутить флексагоны и подбирать устойчивые конфигурации в игре «Жизнь». Вторая, подавив зевок, скажет: «Красиво, только зачем это нужно?». Не будем отвечать. Если человек спрашивает, значит, ему уже нельзя объяснить, пусть доживает остатки дней своих серо и неказисто.
Как говорил великий Штирлиц, запоминается последняя фраза. Так вот, по словам Лазарева, автора «Диагностики Кармы», программирование, как процесс упорядочения хаотической информации, разрушает Карму. А это, как известно, отражается на успехах, на здоровье, на детях и на следующей жизни. Но наверняка отказ от программирования из-за лени и нелюбопытства разрушает Карму еще сильнее. Есть над чем подумать. Ну, вот, вступление получилось сумбурное, но непоследовательность в поступках — одно из основных отличий разумной материи от неразумной.

Переиначивая французскую поговорку «Кто сам пилит дрова, согревается дважды», вы можете утверждать, что «Кто сам пишет программы-головоломки, получает удовольствие дважды», причем удовольствие, не имеющее аналогов в скучном суетном материальном мире. Итак, рассмотрим, что же у нас в арсенале для начала? Здесь не будет инструкций по программированию, так как мы не привязываемся к конкретному языку, только идеи, картинки, алгоритмы и иногда коды программ. Предлагаю несколько вариантов для приложения сил тем, кто хочет начать «свою игру» с компьютером.

Для разминки поиграйте. Например, узнайте, сколько среди четырехзначных цифр таких, в записи которых нет повторяющихся цифр? Простое ли число 2003? Что больше — е в степени пи или пи в степени е? (е — разумеется, основание натуральных логарифмов.) «Насыпьте» на экран отрезков случайной длины под случайными углами. Многие ли из них пересеклись? Идеальный объект для тренировки с востребованным результатом — расчет биоритмов. Известны три ритма, запускаемых в момент рождения — эмоциональный, физический и интеллектуальный, постройте свой диагностический центр.

Можно также заняться поиском совершенных чисел (эти числа равны сумме всех своих делителей), Вполне возможно, что именно вы откроете новое совершенное число, которое проглядели другие искатели.
Классика логических игр — «быки и коровы». Напомню, что это игра для двоих участников. Цель игры — отгадать четырехзначное число. Один из участников загадывает число. Цифры в нем повторяться не должны. Второй участник называет четырехзначные числа, цифры в которых также не должны повторяться, стремясь угадать число первого участника. Результат отгадывания выражается в условных единицах — Быках и Коровах. Бык — цифра входит в число и стоит на своем месте. Корова — цифра входит в число, но находится не на своем месте. Эта игра — идеальная модель для начинающих программистов, позволит освоить работу со строковыми переменными и удивить друзей «умной» программой. Для придания «спортивности» игре количество ходов можно ограничить десятью, добавить остроумных комментариев, очки за удачные ответы и прочие атрибуты.
Известен также вариант игры в быки и коровы, только отгадывать нужно не число, а слово. О количестве букв в загадываемых словах (как правило, пять или шесть) и о том, могут ли они повторяться, участники договариваются заранее. Играть с разрешенными повторами сложнее. Правила такие же, как и с числами. Один из участников загадывает слово. Отгадывающий называет любое слово. Количество букв и повторов букв в этом слове не ограничено. Загадывающий сообщает о результате. Результат выражается в Быках или Коровах. Бык — буква стоит на своем месте, Корова — буква в загаданном слове есть, но стоит на чужом месте. При подсчете результата каждая буква считается столько раз, сколько она есть в слове, названном отгадывающим. В случае, если в загаданном слове есть повторяющиеся буквы, результат считается и на каждую из них отдельно. (Так, если в загаданном слове есть две буквы «А», а отгадывающий назвал слово с тремя буквами «а», и ни одной другой правильной буквы не было, результат будет — 6 коров. Если обе буквы стоят на своем месте — 4 коровы, 2 быка.) При разработке программы придется повозиться с загадываемым словом — в отличие от чисел не все комбинации букв образуют слова (точнее, общеизвестные слова нашего языка), поэтому придется брать слова случайным образом из подготовленной заранее базы. Интересная тонкость — предлагаемые для разгадки слова тоже имеют не произвольный набор букв. «Живой» загадывающий отбирал бы и принимал на тестирование только «правильные», существующие слова. Программа же вряд ли сможет провести такой анализ. И сразу вопрос для размышления — существует ли оптимальная стратегия разгадывания?
Идеальным приятнейшим полигоном для съедания машинного и рабочего времени послужит «Стрельба из пушки» — вы задаете угол, а вам сообщают недолет или перелет в метрах. Дальность зависит от угла наклона дула пушки по известной из физики формуле, но тут есть маленькая хитрость. Цель перемещается случайным образом, поэтому установить связь угла и недолета-перелета не удается. О том, что цель перемещается, не стоит говорить играющим, правда, потом вас могут поколотить, но ведь это потом.

И еще приятная задача для создателей головоломок. Отгадывание числа. Компьютер сообщает: я задумал число от 1 до 300 (например), введите ваши два числа. Отгадывающий вводит два числа, и программа выдает одно из четырех сообщений: мое число больше каждого из ваших; мое число меньше каждого из ваших; мое число между вашими; мое число равно одному из ваших, вы победили. Дальше процесс повторялся, но число попыток ограничено, выдаются язвительные замечания об играющем, но это уже не важно. Лучше поразмышляйте над вопросами. Какова оптимальная стратегия играющего? Какое максимальное число (не торопитесь) может программа загадать, чтобы за шесть (или семь) оптимальных ходов отгадать его? Когда игра надоест и ваши друзья будут отгадывать число с закрытыми глазами, сделайте ту же пакость: пусть при каждом ответе задуманное число изменяется на единицу случайным образом.

«Ним»-подобные игры, или игры с кучками предметов. Представьте, что перед вами и вашим партнером по игре на столе лежит несколько кучек камешков. Правила игры разрешают забрать за один ход любое количество камешков — но только из одной кучки. Выигрывает тот из двух игроков, кто забирает со стола последний камешек. Идеальная задача для программирования. Достаточно заложить в программу оптимальную стратегию, и ваши гости будут недоумевать и злиться оттого, что не могут победить «эту железяку». Подробнее эти игры и красивые сопутствующие задачи разобраны в статье Константина Кнопа «Ним-игры» в «Компьютерре» № 248, статья доступна в Сети на http://cta.net.ru/1998/248/1345/index.html

pic
Orphus system
Подписывайтесь на канал infoCOM.UZ в Telegram, чтобы первыми узнавать об ИКТ новостях Узбекистана
В Telegram
В WhatsApp
В Одноклассники
ВКонтакте