Жак Арсак - Программирование игр и головоломок

Здесь есть возможность читать онлайн «Жак Арсак - Программирование игр и головоломок» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 1990, ISBN: 1990, Издательство: Наука. Гл. ред. физ.-мат. лит., Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование игр и головоломок: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование игр и головоломок»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Рассматриваются способы программирования различных занимательных игр и головоломок с числами, геометрическими фигурами и др. Изложение большинства игр и головоломок ведется в несколько этапов. Сначала разъясняется сама постановка задачи и требования, предъявляемые к алгоритму ее решения.
В следующем разделе книги обсуждается сам алгоритм и возможные пути его реализации.
В конце книга по многим играм и головоломкам даются наброски их программной реализации. Используемый при этом язык типа Паскаля допускает перевод на другие широко распространенные языки программирования.
Для начинающих программистов, студентов вузов и техникумов.

Программирование игр и головоломок — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование игр и головоломок», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Головоломка 38.

Очевидно, что мы очень многого не знаем. Следовательно, нужно тщательно прочесть условие и выделить все данные. Невозможно, чтобы на каждый вопрос решительно все ученики ответили неправильно, потому что если бы это случилось, то они все получили бы 0. Следовательно, на каждый из вопросов есть правильный ответ, который либо является одним из чисел, входящих в ответы учеников, либо другим числом (и тогда более или менее все равно каким).

Таким образом, правильный ответ на первый вопрос может быть одним из чисел

8 12 16 20 и другим числом, скажем 24,

чтобы ответы образовывали арифметическую прогрессию с разностью 4. Сделаем то же самое для других вопросов. Таким образом, вы получите, например:

R 1: 8 12 16 20 24

R 2: 12 14 16 18

R З: 10 12 14

R 4: 16 18 20 22 24

Исследуем все полученные из оценок четверки чисел, отводя по строчке для каждой из них. Они образуют 5*4*3*5 = 300 строк. Для каждой из них ваша программа смотрит, сколько учеников получило 0, и запоминает только те четверки чисел, для которых один и только один ученик получил 0 (это дано в условии). Заметьте к тому же, что вам сообщено, что ответом на один из вопросов должна быть площадь поверхности куба с целым ребром, следовательно, число вида 6 n 2, возможные значения которого 6, 24… Ни один из ответов не имеет вида 6 n 2с целым n . Следовательно, мы должны получить, что в выделенных четверках есть одна или несколько четверок, у которых хотя бы одна компонента имеет значение, не предложенное ни одним из учеников. Ваша программа легко их найдет (такой набор в точности один). На этом основании мы узнаем правильность всех ответов на вопросы, остальное просто.

При всем том, это — головоломка для начинающих…

Головоломка 39.

Эта головоломка сопротивлялась мне много дней и была для меня очень поучительной. В условии сказано, что эта программа должна выполняться за время вычисления, пропорциональное n . Следовательно, и речи нет о том, чтобы исследовать все суммы подпоследовательностей вектора, чтобы выбрать из них наилучшую. Нужно исхитриться. Так же, как мы здесь уже упоминали, ответ может состоять в получении свойств подпоследовательности с максимальной суммой.

Я совершил ошибку, пойдя по этому пути. Я сказал себе: назовем S ( i , j ) сумму элементов вектора с номерами от i до j :

S ( i , j ) = a i + a i +1+ … + a j −1+ a j .

Если для некоторой пары i , j эта сумма максимальна, то отсюда следует

S ( i , j ) > S( i + 1, j )

и, следовательно, a i > 0. Точно так же a i + a i +1> 0.

Если обобщить любое «начало» (левая часть) S ( i , j ) положительно, и точно так же любой «конец» положителен. Можно продолжать:

a i −1отрицателен…

И я таким образом не получил ничего. Это не означает утверждения, что на этом пути нельзя найти решения. Это я его не нашел.

Как я уже говорил, вы можете обратиться к математике за помощью в решении вашей задачи по информатике [28] В математике для решения этой задачи есть полезная формула Ньютона-Лейбница: где F —функция, определяемая условием F ( x ) = f ( x ), x ∊ [ p , q ]. Впрочем, все эти интегралы нам не понадобятся, так как у этой формулы есть гораздо более простой аналог для сумм: a i + a i +1 + … + a j = b j − b i −1 , где последовательность { b } определяется условием, что b k − b k −1 = а k для любого k от 1 до n . Последовательность { b } легко построить: b 0 = 0, b k +1 = b k + a k +1 . Для последовательности { b } задача ставится так: найти такие i < j , что разность b j − b i максимальна. С этой задачей уже легче справиться. — Примеч. ред. . Но у информатики есть и свой собственный творческий дух. Почему бы ему не довериться? Эта задача сбивает вас с толку по причине ограничений на сложность алгоритма. Забудем их. Если вам сказано, что нужно решить задачу, и вам предоставлена свобода вплоть до максимальной сложности, что вы будете делать? Вы составите таблицу S ( i , j ) для i = 1, …, n и j = i , …, n . В этой таблице вы возьмете максимальный элемент.

Чтобы помочь вам, я предлагаю вам рассмотреть следующий вектор:

3 4 −8 2 −3 7 5 −6 1

Образуйте треугольную таблицу чисел S ( i , j ) и запишите ее. Посмотрите, как каждая строчка образуется из предыдущей. Вы увидите, что только три строчки могут содержать максимальное S и, кроме того, не во всей их полной длине. В этом примере максимум нужно искать среди

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование игр и головоломок»

Представляем Вашему вниманию похожие книги на «Программирование игр и головоломок» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Программирование игр и головоломок»

Обсуждение, отзывы о книге «Программирование игр и головоломок» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x