Занимательная информатика_Златопольский Д.М_2011 -424с.pdf

  • pdf
  • 29.04.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Занимательная информатика_Златопольский Д.М_2011 -424с.pdf



Д. М. Златопольский

ЗАНИМАТЕЛЬНАЯ инооргптип

Москва

БИНОМ. Лаборатория знаний

2011

удк 004.9

ББК 32.97

3-67

Златопольский Д. М.

3-67 Занимательная информатика учебное пособие / Д. М. Златопольский. — М. : БИНОМ. Лаборатория знаний, 2011. — 424 с. : ил.

ISBN 9785-9963-0052-5

Книга во многом аналогична популярным книгам «Занимательная физика» Я. И. Перельмана, «Математические чудеса и тайны» М. Гарднера, «В царстве смекалки» Е. И. Игнатьева, »Математическая смекалка» Б. А. Кордемского и др. Она содержит большое количество разнообразных занимательных логических задач и головоломок, интересных фактов и полезных программ, простейших компьютерных игр, фокусов и др. Материалы книги охватывают широкий круг вопросов информатики, вычислительной техники и информационных и коммуникационных технологий (системы счисления, кодирование информации, логика, основы программирования, Интернет и др.). Эти материалы можно использовать как в учебном процессе, так и для внеклассной работы с учащимися.

Для учащихся 5—11 классов и их родителей, а также для учителей информатики и для всех, кто интересуется информатикой.

удк 004.9

ББК 32.97

Учебное изДание

Златопольский Дмитрий Михайлович

ЗАНИМАТЕЛЬНАЯ ИНФОРМАТИКА

Учебное пособие

Ведущий редактор Д. Усенков

Художник Н. Новак Обложка: С. Толстошеина

Иллюстрации: И. Жоссан

Технический редактор Е. Денюкова Корректор Д. Мурадян

Компьютерная верстка: В. Носенко

Подписано в печать 16.12.10. Формат 70х 100/16. Усл. печ. л. 34,45. Тираж 3000 экз. Заказ 1523.

Издательство «БИНОМ. Лаборатория знаний» 125167, Москва, проезд Аэропорта, д. З

Телефон: (499) 157-5272, e-mail: binom@Lbz.ru, http://www.Lbz.ru

Отпечатано в ООО ПФ «Полиграфист», 160001, г. Вологда, ул. Челюскинцев, З.

тел.: 8(817-2) 72-61-75; 8(817-2) 72-60-63.

(О БИНОМ. Лаборатория знан

       rsBN 978-5,9963-0052-5                                              2011

Содержание

Предисловие

1.1. Штрихкод

1.2.

1.З. Повар и пицца

1.4. Градуировка весов

1.5. Серебряная цепочка

1.6. Семь кошельков. 20

1.7. Волшебная таблица. 20

1.8. Семь табличек. 21

1.9. Волшебная карточка. 23

1.10. Фокус24

     1.11. Как отгадать число?                                                                        . 25

1.12. А если солгать?

1.18. «Шоколадка»

2.  Перемещение предметов и животных34

2.1.       Выкатить шарики. 34

2.2.       Восемь монет. . 35

2.З. Шесть монет. . 36

2.4. Еще две задачи на перекладывание монет. 36 2.5.      . 37

2.6.

7.

2.8.         « Уголки»

2.9.         Перемещение лошадей

2.10.    В зоопарке. 41 2.11. Перестановка коней. . 42

2.12.  Перемещаем карточки, или Как апельсин превратить в собаку42

2.13.  Еще 8 задач на перемещение карточек. 43

2.14.  Упорядочить карточки


2.15.  Сортировка, или «По ранжиру — стройся!»

2.15.1.  Сортировка выбором46

2.15.2.  Сортировка вставками. 48

2.15.3.  Сортировка обменом. 50

2.16.  Ханойские башни

З. 64 задачи для Водомера

4.      Взвешиваем всё — от крупы до золотых монет

4.1.       Взвешивание крупы

4.2.       Как отмерить 9 кг гвоздей?

4.3.       Как отмерить 1 кг сахара?

4.4.       Неправильные весы. 63

4.5.       Потерянная гиря. . 63

4.6.       19 гирек. 63

4.7.       Как оставить себе золотую монету? . 63

4.8.       Три монеты, одна — фальшивая .

4.9.       81 монета, одна — фальшивая

4.10.   101 монета, одна — фальшивая

4.11.   51 монета, одна — фальшивая

4.12.   Антиквар и 99 монет

4.13.   61 монета, две — фальшивые

4.14.   103 монеты, две — фальшивые

4.15.   10 монет: 5 золотых и 5 серебряных

4.16.  


Шесть монет, две — фальшивые

4.17.   Странные весы. 65

4.18.   6 монет, 2 фальшивые, не очень точные весы. 66

4.19.   8 монет, 2 фальшивые. 66

4.20.   Разложить 22 монеты на две кучки. 66

4.21.   Мешок с фальшивыми монетами. 66

4.22.   Еще один мешок с фальшивыми монетами           . 66

4.23.   12 мешков с золотыми монетами

4.24.   101 монета, 50 фальшивых

4.25.   Пять кучек по 5 монет

4.26.   Экспертиза фальшивых монет

4.27.   201 монета, 50 фальшивых

4.28.   Случай в тюрьме для пиратов

4.29.   Три пары монет

4.30.   20 металлических кубиков. 68

4.31.   Двенадцать монет. 69

5.      Маневры, переходы, переезды. 70

5.1.       Формирование состава. 70

5.2.       Перестановка вагонов. 72

5.3.       И опять формирование состава         . 72

5.4.       Перестановка вагона и цистерны

5.5.       Ночной переход по мосту

5.6.       Переход по пустыне

5.7.       Задача о лифте

6.      Пляшущие человечки и лысина раба. 75

6.1.       Шифр Цезаря. 76

6.2.       Буратино и шифровка. 77

      6.З. Машина для расшифровки из бумаги                                          . 77

6.4.        « Тарабарская грамота»

6.5.        Карл пишет Кларе

6.6.        Номера вместо букв

7. Однажды в поезде

6.8.       Расшифровка текста

6.9.       Частотный анализ

6.10.  Что такое «лягяня»?

6.11. Шифр Вижинера  

. 81

6.12. Послание будущим издателям

. 81

6.13. Перестановочный шифр     

. 81

  14. Шифрование двумя цифрами

. 83

6.15. Шифр Тритемиуса 

 84

6.16. Три письма      

. 86

6.17.  Шифрование текста с помощью таблиц      . 86

6.18.  Игра в прятки, или Что такое стеганография

7.      Числовые ребусы и кросснамберы

7.1.       Ребусы со звездочками

7.2.       Ребусы в четверичной системе счисления

7.3.       Числовой ребус в шестеричной системе счисления

7.4.       Числовые ребусы в двенадцатеричной системе счисления

7.5.      


Числовой ребус в системе счисления с неизвестным основанием. 101 7.6. Кросснамберы. 101

8.      На пальцах и в уме. 108

8.1.       Рука человека как счетная машина. 108

8.2.       Возведение двузначных чисел в квадрат. 111

8.3.       Еще восемь приемов быстрого счета. 112

8.3.1.  Быстрое возведение в квадрат112

8.3.2.  Квадраты чисел, состоящих из единиц. 112

8.3.З. Другие степени числа 11. 112

8.з.4. Произведение двух «особых» чисел. 113

8.3.5.  Умножение числа 37     . 113

8.3.6.  Особенные случаи умножения на 9

8. 7. Особенные случаи деления на 9

 

8.3.8. Деление на число без восьмерки        

. 114

8.4.

Извлечение корня — не на пальцах и не в уме                                                                                             

. 115

 

8.4.1. Правило извлечения квадратного корня     

. 115

 

8.4.2. Правило извлечения кубического корня    

. 118

8.5.

Извлечение кубического корня в уме        

. 120

8.6.

Сокращенное вычисление среднего арифметического                                                                                                     

. 121

9.      Семь полезных программ, и не только. 123

9.1.       Превратим компьютер в будильник123

9.2.       Как установить на программу пароль. 125

9.З. Каким днем недели был день вашего рождения. 128

9.4.        «Звездное небо». 130

9.5.        Проверка скорости реакции человека. 131

9.6.        Биологические ритмы. 134

9.7.        Обмен значениями между переменными. 139

9.8.        Рекурсия. 140

10.


Ваш помощник — калькулятор. 143

     10.1. Вычисление процентов     . 144

      10.2. Память калькулятора         . 145

      10.3. Автоматическая память   

     10.4. Использование клавиши обратного числа                 

 149

        10.5. Калькулятор- «переводчик»           

 . 150

     10.6. Фокус с датой рождения       

 . 152

11. Компьютерные фокусы                                                                      

 . 153

     11.1. Компьютер отгадывает день рождения         

 . 153

     11.2. Компьютер отгадывает дату рождения         

 . 154

    11.3. Компьютерные фокусы на отгадывание чисел        

 . 156

                11.3.1. Фокус № 1

 . 156

           11.3.2. Фокус № 2

 . 157

                  11.3.З. Фокус З    

 158

                  11.з.4. Фокус 4    

 158

                11.3.5. Фокус № 5

 158

               11.3.6. Фокус .N2 6

 . 158

                 11. 7. Фокус № 7  

 . 158

           11.3.8. Фокус № 8

 . 159

               11.з.9. Фокус .N2 9  

 . 159

           11.3.10. Фокус № 10                            

 159

           11.3.11. Фокус № 11                            

 . 159

         11.3.12. Фокус .N2 12                            

 . 159

11.4. Компьютерный фокус «Отгадай число»

 . 161

     11.5. Фокус « Отгадывание названий»       

 . 166

     11.6. Варианты фокуса «Отгадывание названий»            

 . 169

     11.7. Игра-упражнение «Поймай слово»         

 . 172

    11.8. « Отгадыватель мыслей »       

 . 174

12. Моделирование простейших игр на компьютере                                                                                   

 . 177

     12.1. Игра «Чет или нечет»?       

 . 177

               12.1.1. Программа на школьном алгоритмическом языке .

               12.1.2. Игра в среде Microsoft Excel               . 179

        12.2. Игра «Отгадай число»           182

         12.3. Игра «Кубик»         . 183

12. З. 1. Программа на школьном алгоритмическом языке  . 183

               12.3.2. Игра в среде Microsoft Excel             . 184

         12.4. Игра «Карты»               . 185

12.4.1. Программа на школьном алгоритмическом языке . . 185

               12.4.2. Игра в среде Microsoft Excel           . 187

     12.5. Игра «Быки и коровы»    . 189

        12.6. Игра Баше            . 191

13. Лабиринты           . 195

13.1. Нить Ариадны. 196

13.2. Лабиринт из комнат. 201

13.З. Мышь в лабиринте. 202

13.4. Разные лабиринты. 202

14.           Софизмы и парадоксы. 205

14.1. 4 руб. = 40 ООО коп. 206

    14.2. 2х 2=5                                                                      . 206

14.з.. 206

14.4.. 206

14.5.. 206

14.6.. 207

14   7. Все числа равны между собой. 207

14.8. Любое отличающееся от нуля число равно противоположному ему числу207 14.9. Любое число а равно меньшему числу Ь. 207

14.10.Любое число равно своей половине. 207

14.11.Отрицательное число больше положительного. 208

14.12.Любое число равно числу, в два раза большему его. . 208

14.13.Любое число равно нулю. 208

. 208

14.15.Вес слона равен весу комара. 208

14.16.Хитрый хозяин гостиницы. 209

14.17.Парадокс «Куча»          . 210

14.18.Парадокс «Мэр города»

14.19.Парадокс «Генерал и брадобрей»

14.20.Парадокс «Каталог всех нормальных каталогов»

15.          


Жаргонизмы Интернета. 212

15.1.      Откуда пришла «собачка»?. 212

Что русским — «собачка» , финнам— «кошка». 214

И все-таки — почему «собачка» ?. 215

15.2.      Что такое «спам». 215

15.3.      Смайлики. 216

16.           Задачи о шапках. 219

16.1.      Приятели и их шапки. 219

16.2.      Те же приятели и те же шапки. 220

16.3.      Зачет по логике. 220

16.4.      Умный сговор. 220

16.5.      Три коробки. 221

17.           Шутки и розыгрыши на компьютере. 222

17.1.      «Фальшивый» рабочий стол Windows. 222 17.2. Невидимая сумма. 223

17.3. Необычный результат расчета по формуле в Microsoft Word. 225 17.4. Очень важный вывод. 225

17.5. Проверка знания таблицы умножения226

18.           Разные задачи. 227

18.1.      Вкусные ломтики. 227

18.2.      Три лампочки. 227

18.3.      Как приготовить эликсир бессмертия. 228

18.4.      Единственные часы остановились. 229

18.5.      Древнеегипетская задача. 229

18.6.      Задача о стрелках. 230

18.7.      Високосные годы. 230

18.8.      Почтовые индексы. 233

18.9.      Десять утверждений. 233

18.10. Сказка. 233

18.11. Отец сына. 234

18.12. Разговор родственников. 234

18.13. Кто изображен на портрете?. 234

18.14. Слова после чисел. 235

18.15. «Ей было 1100 лет». 235

18.16. Непредвиденное затруднение. 235

18.17. Пропущенное число. 236

18.18. Кощей Бессмертный и Иван Царевич. 236

18.19. Бедный торговец (старинная задача). 236

18.20. Может ли такое быть?. 236

18.21. А такое?. 236

18.22. Об экономичности систем счисления. 236

18.23. Прабабушки и прадедушки. 237

18.24. Илья Муромец и Змей Горыныч. 238


18.25. Шутники и серьезные238

18.26. Три очень умных попугая. 238

18.27. Умная обезьяна. 239

18.28. Импульсы с планеты т Кита. 239

18.29. 10 единиц и 10 двоек. 239

18.30. Еще одна «Шоколадка» (задача-шутка). 240

18.31. Почему трижды?. 240

18.32. Детская песенка. 240

18.33. Умеете ли вы считать?. 240

18.34. Два вопроса. 241

18.35. Пятьдесят вопросов241

Ответы. 248

Приложения. 394

Приложение 1. Из истории систем счисления. 394

1.Вавилонская нумерация. 394

2.Система счисления майя. 395 З. Буквенная цифирь. 396

4. Римские цифры. 399

5. Арабские цифры. 401

Приложение 2. Азбука Морзе. 401

Приложение З. Луи Брайль и его шрифт

Приложение 4. Русская семафорная азбука406

Ответы на дополнительные задания. 41

Литература. 423

Посвящаю эту книгу своей жене Татьяне

Предисловие

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

Книга состоит из 18 глав и содержит четыре приложения.

В главе 1 «Двоичная система — не только в компьютере» приведены примеры использования двоичной системы счисления «в некомпьютерной жизни», Среди них — штриховое кодирование товаров (широко применяемое в настоящее время), маркировка фотопленок, а также игры, фокусы, головоломки и задачи, основанные на двоичной системе.

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

Может быть, на уроках информатики читатели уже знакомились с исполнителями «Переливашка» и / или «Водолей» и знают, как, имея два сосуда вместимостью 10 и 2 литра, отмерить 4 литра воды. А как отмерить 1 литр воды, имея З- и 5-литровые ем-


кости? Эта и еще много других интересных задач такого типа предлагаются в главе З — «64 задачи для Водомера» .

В главе 4 «Взвешиваем все — от крупы до золотых монет» приведены задачи на нахождение фальшивых монет (одной, нескольких или даже целых мешков!) и другие занимательные задачи на взвешивание.

Содержание главы 5 «Маневры, переходы, переезды» связано с разработкой алгоритмов решения задач перестановки вагонов на железной дороге, перехода по пустыне, перемещения в лифте и др.

Шифрование текста используется человечеством с того момента, как появилась первая секретная информация, которая должна быть недоступна посторонним. Существует много разных систем шифрования. Некоторые из них описаны в главе 6 «Пляшущие человечки и лысина раба» . В ней рассказывается также о стеганографии (не путайте ее со стенографией!). Если вы хотите узнать, что это такое (и при чем тут «лысина раба»), — читайте эту главу.

Любителям головоломок предназначена глава 7 «Числовые ребусы и кросснамберы» («кросснамберы» — это головоломки, похожие на кроссворды, но вместо слов в них записываются числа). Головоломки в ней — особенные: в них применяются числа, записанные не в десятичной системе счисления, а в других системах.

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

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

Название главы 10 «Ваш помощник — калькулятор» говорит само за себя: в ней описывается ряд возможностей вашего электронного помощника, знать которые полезно каждому человеку, использующему калькулятор.

Предисловие

В главе 11 «Компьютерные фокусы» рассказывается о нескольких простейших компьютерных фокусах с отгадыванием чисел, названий, даты рождения и даже... мыслей 9!

Играть в компьютерные игры любят и дети, и взрослые. А знаете ли вы о том, что некоторые простые игры вы можете запрограммировать сами? В главе 12 «Моделирование простейших игр на компьютере» описано шесть таких игр.

Глава 13 «Лабиринты» посвящена алгоритмам поиска выхода из лабиринтов. Кроме «теории» в ней представлены и сами лабиринты, найти выход из которых предлагается читателю.

Оказывается, что можно «доказать» , что 2 х 2 = 5, а вес слона равен весу комара! «Доказательства» этого и других аналогичных парадоксальных примеров приводятся в главе 14 «Логические софизмы и парадоксы» .

В главе 15 «Жаргонизмы Интернета» рассказано о терминах, которые широко используются пользователями «Всемирной паутины» , о «собачке», «спаме» и смайликах.

Название главы 16 «Задачи о шапках» также говорит само за себя — в ней приведен ряд задач, в которых фигурируют эти головные уборы... ну и, конечно, логика.

Напряженная работа по решению задач и головоломок и разработке программ должна сочетаться с отдыхом и развлечениями. Поэтому в книге есть глава 17 «Шутки и розыгрыши на компьютере » .

Содержание же последней главы 18 «Разные задачи» автор оставляет без комментариев 9.

В каждой главе есть как легкие, так и трудные задачи. Ко всем задачам даны ответы с подробными комментариями дополнительными заданиями.

Кроме того, книга снабжена несколькими приложениями, где содержатся интересные и не всем известные материалы.

В Приложении 1 рассказывается о нескольких «древних» системах счисления римской, вавилонской, системе индейцев

майя, славянской алфавитной системе («буквенная цифирь»), а также о том, почему цифры, которыми мы пользуемся, называют арабскими. Здесь есть и задания для самостоятельной работы (также с ответами).

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

О человеке, создавшем систему кодирования букв для слепых людей, и о самой этой системе рассказывается в Приложении З, посвященном азбуке Брайля.

Завершает книгу Приложение 4, в котором говорится о русской семафорной азбуке — системе передачи информации с помощью флажков, применяющейся на флоте.

Книга предназначена для учащихся 5—11 классов, но будет также полезна и учителям информатики, которые могут использовать ее материалы как в учебном процессе, так и для внеклассной работы.

Двоичная система —

не только в компьютере!

ы, конечно, знаете о том, что в компьютере все вычисления D производятся в двоичной системе счисления. А знаете ли вы о других примерах использования этой системы?

1.1. Штрихкод

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

Наверное, вы знаете, что такое изображение называется штриховым кодом, или штрихкоДом. Что же это такое и зачем оно нужно? Рис. 1.1

В свое время производители товаров и торговые фирмы столкнулись с серьезной проблемой: товаров много (например, в среднем универмаге имеется в продаже около десяти тысяч наименований), и каждый из них сопровождается длинным сертифика-

том — документом, в котором указано, где сделан товар, на какой фирме, сколько он весит, каковы его габариты и т. д. Чтобы упростить учет этих товаров, придумали систему кодирования такой информации в виде последовательности цифр штрихового кода. Более 30 лет назад была создана глобальная международная организация системы товарных номеров EAN/UCC, образованная на основе Европейской (European Article Numbering Association — EAN International) и Северо-Американской (Uniform Code Council — UCC) ассоциаций товарной нумерации. В настоящее время система EAN /UCC объединяет национальные организации в более чем 100 странах мира. Каждая страна имеет свой номер: коды стран, как правило, трехзначные (например, Россия имеет номера с 460 по 469), а внутри каждой страны производится нумерация предприятий — изготовителей товаров. В Российской Федерации национальной организацией товарной нумерации членом EAN International является Ассоциация автоматической иДентификации ЮНИСКАН/ЕАЛТ РОССИЯ, которая насчитывает более 5000 предприятий-членов. Всем им присвоены уникальные идентификационные номера, которые начинаются с цифр 460 (EAN РОССИЯ).

Каждому продукту назначается уникальный 13-значный номер. Его первые три цифры называют префиксом EAN, и именно они указывают страну.

Следующие 9 цифр содержат номер предприятия, зарегистрированного внутри национальной организации, и номер товара. Структура этих 9 знаков, приходящихся на номер предприятия и номер товара, определяется непосредственно национальной организацией, например: 5 знаков — предприятие + 4 знака — товар; 6 знаков — предприятие + З знака — товар и т. п.

В настоящее время ЮНИСКАН/ЕТЧ РОССИЯ определила следующую структуру: 6 цифр — номер предприятия, З цифры номер товара.

Итак, всю необходимую информацию о конкретном товаре отражают 12 цифр . Но внимательный читатель, конечно, уже обнаружил, что на приведенном выше рисунке (рис. 1.1) в числе не 12, а 13 цифр! Эта последняя, тринадцатая, цифра — контрольная. Для чего она нужна — мы расскажем чуть позже.

При наличии на упаковке товаров такой закодированной информации можно автоматизировать процесс распознавания этой информации, если считывать ее специальным устройством

Обратим внимание на то, что по первым трем цифрам кода абсолютно точно определить страну происхождения товара все же нельзя, так как изготовители могут зарегистрироваться не в своей отечественной организации товарной нумерации, а за рубежом, и получить тем самым штрихкод другой страны.


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

Рис. 1.2


Эти полоски и пробелы на графическом изображении штрихового кода очень хорошо понятны сканеру штрихкода. Считывая такую информацию слева направо, сканер присваивает «1» первой встреченной черной полоске, а «О» — первому промежутку. Следующие промежутки и штрихи считываются как последовательности из одного, двух, трех или четырех нулей или единиц в зависимости от ширины штриха или промежутка. В результате все изображение будет представлено как последовательность битов, например:

1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 ...

Как вы уже, наверное, догадались, эти биты и есть двоичное представление десятичного числа — кода товара! При считывании штрихового кода сканер по комбинации штрихов восстанавливает закодированный номер. В крупных магазинах кассир, делая расчет, просто проносит товар, повернув его штрихкодом вниз, над кассовым аппаратом, и на экране этого аппарата мгновенно «выскакивает» цена. Это происходит потому, что кассы со считывателями штрихового кода подключены к компьютерут , который обрабатывает считанную информацию . Кроме

Многие думают, что в штрихкоде сразу записана цена. Но на самом деле в коде данных о цене нет, ведь один и тот же товар в разных магазинах продается по разным ценам, которые к тому же то и дело меняются. Просто когда товар поступает в данный магазин и принимается решение, по какой цене его продавать, в компьютер заносятся данные о его штрихкоде и цене. Кассовый аппарат распознает, с каким именно товаром он имеет дело, и высвечивает заложенную в компьютере стоимость.

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

Некоторых покупателей смущает, когда на штрихкоде есть только собственно штрихи, а цифр нет. Но это вовсе не признак подделки! Для кассового аппарата цифры вообще не имеют значения, поэтому если места для штрихкода мало, то их не ставят.

Не нужно «пытать» продавца и в том случае, если штрихкод «слишком узкий» или «слишком короткий», или вообще «какой-то не такой» . Обычно так бывает на маленьких по размеру товарах; ЮНИСКАН разрешает производителям таких товаров использовать сокращенный, 8-цифровой вариант кодировки.

Как же так? — спросите вы, — получается, что нам можно на штрихкод вообще не смотреть, там нет полезной для нас информации?


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

Итак, если вы хотите узнать, с чем вы имеете дело, нужно произвести следующие арифметические действия:

1)               сложить цифры, стоящие на четных позициях (для штрихкода, изображенного на рис. 1, 1 ,

12);

2)               полученную сумму умножить на З (12 • З = 36);

З) сложить цифры, стоящие на нечетных позициях, не учитывая контрольную цифру (4 + О + 9 + 2 + О + О = 15);

4) сложить то, что получилось в результате второго и третьего действий (36 + 15 = 51);

5) в полученном результате отбросить первую цифру (получится 1);

6) вычесть из 10 то, что получилось в пятом пункте (10 - 1 9).

Этот результат должен совпадать с контрольной цифрой. Если нет — товар поддельный!

Метод этот, конечно, сложный. Однако если вы покупаете дорогую вещь или у вас есть сомнения, доброкачественный ли продукт питания, имеет смысл произвести эти в общем-то элементарные процедуры . Ведь разочарование от неудачной покупки обойдется гораздо дороже. И в любом случае вы очень удивите окружающих своими знаниями...

А в заключение обратите внимание на штриховой код, имеющийся на обложке данной книги. Он не начинается с цифр 460! Но книга — не поддельная! 9. Просто для книг и ряда других видов товара выделены специальные префиксы.

1,2. двоичное кодирование в фотоаппарате

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


Если взять кассету с фотопленкой, то во многих случаях можно увидеть на ней набор серебристых и черных квадратов (рис. 1.3). Этот набор называется ОХ-коДировкой. Составляющие его 12 квадратов можно рассматривать как 12 битов, если серебристый квадрат считать единицей, а черный  Рис. 1.3

нулем.

Что означают эти биты? Вы, возможно, знаете, что фотопленки различаются по светочувствительности, которая измеряется в специальных единицах, установленных Международной организацией по стандартизации (ISO), и может принимать 24 стандартных значения (табл. 1.1). Самыми распространенными являются пленки светочувствительностью 100, 200 и 400 единиц.

Конечно, если касса магазина оборудована сканером для считывания штрихового кода, то все за вас сделает компьютер, который по описанному выше алгоритму рассчитает контрольную сумму и сравнит ее с последней цифрой. Совпадение считанного и вычисленного контрольных разрядов означает правильное считывание штрихового кода. В этом случае на сканере появляется соответствующий световой/звуковой сигнал. Если же код читается плохо, то одна или несколько цифр кода могут быть при считывании искажены. В этом случае сканер не даст сигнала о правильном считывании. Аналогично, если кто-то поставил фальшивый код из произвольных 13 цифр или если контрольный разряд имеет произвольное значение, то этот штриховой код сканером считываться не будет!


Таблица 1.1

25

32

40

50

64

80

100

125

160

200

250

320

400

500

640

800

1000

1250

1600

2000

2500

3200

4000

5000

Так вот, чувствительность в единицах ISO не только напечатана на упаковке, но и закодирована на кассете с пленкой!

Сколько битов требуется, чтобы закодировать все возможные значения светочувствительности пленки? Ответ прост 5! Так как 24 = 16, то четыре бита для 24 возможных значений мало, а 2 5 = 32 —, более чем достаточно.

Если пронумеровать квадраты на кассете от 1 до 12 (рис. 1.4), то соответствие между ними и светочувствительностью иллюстрирует табл. 1.2 (в ней приведены только некоторые значения чувствительности пленки).


Коды на кассетах используются практически на всех современных фотоаппаратах для автоматического определения светочувствительности пленки. Электрическая схема фотоаппарата построена так, что ток подРис. 1.4 водится к первому квадрату на кассете (поэтому он всегда серебристый). Этот ток будет (или не будет) проведен пятью контактами на квадратах со 2-го по 6-й, в зависимости от того, окрашены они серебристой краской или нет. Если ток присутствует на контактах 4 и 5, но отсутствует на контактах 2, З и 6, то это значит, что в фотоаппарат вставлена пленка 400 ISO (см. табл. 1.2). Соответственно, при съемке выдержка будет установлена автоматически.

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

Квадраты с 8-го по 12-й тоже используются для кодирования информации. В квадратах 8, 9 и 10 зашифровано количество кадров на пленке: в вариантах, показанных на рис. 1.3, — 36 кадров (слева) и 24 кадра (справа), а квадраты 11 и 12 содержат сведения о том, черно-белая это пленка или цветная и позитивная она или

негативная.

Таблица 1.2

Квадрат 2

Квадрат З

Квадрат 4

Квадрат 5

Квадрат 6

Чувствительность

 

 

 

1

 

25

 

 

 

 

1

32

 

 

 

1

1

40

 

1

 

1

 

100

 

 

 

 

 

 

1

1

 

1

 

200

 

 

 

 

 

 

 

О

1

1

 

400

 

 

 

 

 

 

1

1

1

 

1

4000

1

1

1

1

1

5000

1.3. Повар и пицца


В распоряжении повара имеются перец, лук, грибы, помидоры, морковь и анчоусы, причем все это можно, по его мнению, добавлять к сыру, чтобы приготовить пиццу (а можно и ничего не добавлять!). Сколько типов пиццы может приготовить повар?

1.4. Градуировка весов

Есть пружинные весы, которые нужно отградуировать (рис. 1.5). Каким должен быть набор гирьразновесов для градуировки таких весов на интервал масс 1, 2, . 31 кг, чтобы количество гирь в этом наборе было минимальным?

1,5, Серебряная цепочка                                             Рис. 1.5

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

1. Какое звено цепочки надо аккуратно расцепить, чтобы прожить в гостинице 7 дней и ежедневно расплачиваться с хозяином? (Хозяин может давать сдачу звеньями, полученными им ранее.)

2. Сколько звеньев пришлось бы расцепить, если бы путешественник жил в гостинице 100 дней и имел цепочку из 100 звеньев?

1.6. Семь кошельков

Как разложить по семи кошелькам 127 рублевых монет, чтобы любую сумму от 1 до 127 рублей можно было выдать, не открывая кошельков (т. е. вместе с кошельками)?

1.7. Волшебная таблица

Посмотрите на табл. 1.3. С помощью этой таблицы можно отгадать любое задуманное число, не большее 31, если задумавший это число скажет, в каких столбцах таблицы оно встречается (номера столбцов указаны в первой строке таблицы). Например, если задумано число 22, то по названным номерам столбцов (5, З и 2) его можно вычислить так: 2 5 1 + 2 3 1 + 22-1 = 16 4 + 2 (это можно сделать, даже не глядя на таблицу).


Таблица 1.3

 

 

 

 

 

 

 

 

 

 

17

 

 

 

 

18

10

 

 

 

19

11

 

 

 

20

12

12

10

 

21

13

13

11

11

 

14

14

 

13

 

15

15

 

15

 

24

20

 

17

 

25

21

 

19

 

26

22

 

21

 

27

23

 

23

28

28

28

26

25

29

29

29

27

27

зо

зо

зо

зо

29

31

31

31

31

31

В чем же секрет «волшебной» таблицы? Найдите ответ на этот вопрос.

1.8. Семь табличек

Имеются 7 табличек, каждая из которых содержит, подобно шахматной доске, 64 клетки (табл. 1.4—1.10). В эти клетки вписаны различные числа от 1 до 127. Пусть ваш собеседник задумает какое-либо из этих чисел и скажет, в каких таблицах (они имеют номера от 1 до 7) это число встречается . Тогда вы сможете точно назвать это число. Как это делается?

Таблица 1.4

 

 

 

 

 

11

13

15

17

19

21

23

25

27

29

31

33

35

37

39

41

 

45

47

49

51

53

55

57

59

61

63

65

67

69

71

73

75

77

79

 

 

85

87

 

 

 

95

 

 

101

103

105

107

109

111

113

115

117

119

121

123

125

127


Таблица 1.5

 

 

 

 

 

 

14

15

18

19

22

23

26

27

зо

31

 

35

38

39

42

 

46

 

50

51

54

55

58

59

62

63

66

67

70

71

 

75

78

79

82

83

86

87

90

91

94

95

98

 

102

103

106

107

110

111

114

115

118

119

122

123

126

127

Таблица 1.6

 

 

 

 

 

 

 

15

 

 

22

23

28

 

зо

31

36

37

38

39

44

 

 

47

52

53

54

55

60

61

62

63

68

69

70

71

76

77

78

79

84

85

86

87

92

93

94

95

100

101

102

103

108

109

110

111

116

117

118

119

124

125

126

127

Если вы будете демонстрировать кому-нибудь этот фокус, то вы можете дать загадывающему число пачку карточек с этими таблицами и предложить передать вам те карточки, на которых имеется задуманное им число.


инфор

Таблица 1.7

 

 

10

11

12

13

14

15

 

 

26

27

 

 

зо

31

 

 

42

 

 

 

 

47

 

 

58

 

 

 

62

63

 

 

 

 

 

 

78

79

 

 

90

 

 

 

94

95

 

105

106

107

108

109

110

111

120

121

122

123

 

125

126

127

Таблица 1.8

16

17

18

19

20

21

22

23

 

 

26

27

28

 

зо

31

 

 

50

51

 

 

54

55

 

 

58

59

 

 

62

63

 

 

82

 

 

 

86

87

 

 

90

91

 

 

94

95

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

Таблица 1.9

32

33

 

35

36

37

38

39

 

41

42

 

44

45

 

47

 

49

50

51

 

 

54

55

 

 

58

59

 

 

62

63

 

 

98

99

100

101

102

103

 

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

Таблица 1.10

64

65

66

67

68

69

70

71

 

 

 

 

 

 

 

 

80

81

82

83

84

85

86

87

 

89

90

91

92

 

94

95

 

 

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

23

1.9. Волшебная карточка

Теперь, когда вы уже знаете секрет двух предыдущих фокусов, рассмотрим аналогичный, но более эффектный фокус. Для его демонстрации необходимо подготовить шесть карточек с числами (см. рис. 1.6, внизу) и одну «волшебную» карточку (почему «волшебную» — вы скоро поймете). В принципе, эти карточки с числами не отличаются от карточек, использовавшихся в предыдущем фокусе, но числа на них не расположены в порядке возрастания, так что ключевые числа (числа, каждое из которых меньше всех остальных на данной карточке) занимают разные положения среди остальных чисел. Кроме того, некоторые числа на каждой карточке повторяются. На всех карточках имеются отверстия (на рисунке они показаны в виде закрашенных кружков). Отверстия в «волшебной» карточке при этом соответствуют местам, где на шести карточках расположены ключевые числа, а на каждой из шести числовых карточек отверстия сделаны в тех же местах, что и на «волшебной» карточке, за исключением одного, где проставлено ключевое число данной карточки.

Волшевная карта

О                                               О

 

54 23 18 58 63 31 26 51

29 О 61 50 20 27 О 52

56 28 О 17 59 48 21 60

31 О 19 55 О зо 26 53

62 49 24 57 22 52 27 25

 

11 38 62 51 43 26 55 15

190 65 35 51 19 О 46

14 з 059 27 7 58 18

260 6 47 2 39 О 22

54 23 50 зо 35 42 11 34

45 63 27 10 58 9 61 42

29 8 11 57 зо 59 062

13 24             60 40 47 14 56

460 12 44 25 О 27

43 15 41 31 26 62 12 28

 

5 47 28 53 61 13 20 52

37 О 44 зо 46 55 4 7

22            43 О 12 62 14 60 31

23            29 54 150 6

45 36 39 21 47 28 63 38

 

39 63 54 38 45 61 49 33

53 О 57 46 43 41 О 62

34 40 О 55 42 51 59 35

60 32 44 59 О 58 О 58

36 48 50 56 52 47 42 37

 

35 49 27 17 21 55 61 39 з 31 51 63 43 О 13

15 7 1 19 15 23 59 41

570 29 9 О 35 О 51

53 5 47 25 45 33 11 37

 

Рис. 1.6

Для случая, когда отгадываемое число находится в диапазоне от 1 до 64.

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

1.10. Фокус

Возьмите какие-либо 15 названий (пусть, например, это будут термины, связанные с информатикой и компьютерами, см. табл. 1.11).

Таблица 1.11

1.  Бит

2.  Системный блок

З. Дискета

4.       Монитор

5.       Принтер

6.       Джойстик

7.       Сканер

8.       Байт

9.       Логика

10.   Система счисления

11.   «Мышка»

12.   Цифра

13.   Число

14.   Разряд

15.   Программа

Показывая зрителям эту таблицу, попросите одного из них задумать какой-нибудь термин. Потом, стоя спиной к таблицам, показанным ниже (табл. 1.12—1.15), попросите сказать, в каких из этих таблиц присутствует задуманное слово или словосочетание (номер каждой таблицы указан в ее правом верхнем углу). Получив ответ, вы сразу называете задуманное слово. Затем вы обращаетесь к другому зрителю и опять безошибочно называете задуманное им слово. Как вы сможете это сделать?

                                   Таблица 1.12                                     Таблица 1.13

1

 

2

Сканер

Число

Логика

Бит

Принтер Программа

Дискета

«Мышка»

Сканер

Система счисления

Программа

«Мышка»

Системный блок

Дискета

Разряд

Джойстик

                                  Таблица 1.14                                     Таблица 1.15

 

 

4

Цифра

Число

Монитор

Принтер

Джойстик

Сканер

Программа

Разряд

Цифра Байт

Разряд

Логика

Система счисления

Программа

Число

« Мышка»

1.11.  Как отгадать число?

Я загадал некоторое целое число из интервала от 500 до 1000 включительно. Беретесь ли вы узнать его, задав мне не более 10 вопросов, на каждый из которых я буду отвечать только «да» или «нет»? (Вопросы типа «Задуманное число больше 800?» , в которых фигурируют слова «больше», «больше либо равно», «меньше», «не меньше», «превышает» и т. п., а также вопросы типа «Задуманное число находится в интервале от ... до ... ? » задавать нельзя.) Беритесь, эта задача вполне разрешима!

1.12.  А если солгать?

Допустим, что номер моего телефона 5-значный. Как его узнать, задав наименьшее количество вопросов, вы, решив предыдущую задачу, уже, наверное, знаете. Предположим теперь, что на один из ваших вопросов (любой) я могу дать неправильный ответ. Какие вопросы в этом случае нужно задавать и какое наименьшее количество вопросов вам понадобится, чтобы все равно отгадать этот номер?

1,13, Пять мешков с фальшивыми монетами

Предлагая эту задачу, автор немного опередил события — подобным задачам будет посвящена глава 4. Тем не менее обсудим ее здесь.

Есть 5 мешков с монетами. В некоторых из них монеты фальшивые (они на 1 грамм легче настоящих). Есть также еще 100 настоящих монет. Необходимо за одно взвешивание на чашечных весах с указателем, показывающим разность весов грузов на левой и правой чашках с точностью до 1 г в пределах от О до 100 г, установить, в каких мешках находятся фальшивые монеты.


 

26

1.14. Найти фальшивую монету

И здесь автор тоже несколько «опережает события»...

Есть 8 монет: 7 настоящих, каждая из которых весит 10 г, и одна фальшивая весом 9 г. Необходимо, используя электронные весы, показывающие вес с точностью до 1 г, найти фальшивую монету за минимальное количество взвешиваний.

Решение

Пронумеруем монеты: 1, 28 и обозначим их вес соответственно как т 1, т2 т8.

При первом взвешивании определим вес любых четырех монет, например 1-й, 2-й, 3-й и 4-й. Если весы покажут 40 г, то фальшивая монета находится среди оставшихся монет; если 39 г — то среди взвешиваемых. Затем нужно узнать вес любых двух монет из соответствующей группы и выявить пару монет, среди которых есть фальшивая. Третье взвешивание покажет, какая монета из этой пары фальшивая.

Все возможные варианты взвешиваний можно оформить в виде следующего алгоритма:

 Первое взвешивание п1 + Т2 + ТЗ + [714 если т1 + т2 + тз + па 40 то Фальшивая монета — в другой группе

Второе взвешивание п5 + тб ? Можно взвесить и другие монеты


      если п5 + тб       19

Фальшивая монета  в рассматриваемой паре

Третье взвешивание

                           если [715                       10

Фальшивая монета  номер 6 иначе

Фальшивая монета — номер 5

Фальшивая монета  в паре (7'

Третье взвешивание

        если rn8     10

Фальшивая монета  номер 7

Конечно, такая запись довольно громоздкая. Попробуйте разработать алгоритм поиска номера фальшивой монеты, схема которого имеет вид:

1              . Закодируем номера монет в виде

2              . Проведем три взвешивания  Первое взвешивание

если то

иначе

все

 Второе взвешивание

то

иначе

все

 Третье взвешивание

если то

иначе

все

З . Определяем номер фальшивой монеты

 

28

1.15, Двоичная система и «Ханойские башни»

Головоломка «Ханойские башни» будет подробно описана в конце главы 2 (обязательно прочитайте о ней, прежде чем идти дальше). Там подробно будет рассмотрен алгоритм ее решения. А здесь мы пока заметим лишь, что последовательность перекладывания дисков с одного стержня на другой (см. рис. 1.7) может быть найдена при использовании двоичной системы счисления.

III

Рис. 1.7

Прежде всего обозначим диски, начиная с самого маленького, соответственно как А, В, С и т. д. Далее запишем в таблицу десятичные числа п от 1 до 8, переведенные в двоичную систему (табл. 1.16).

Если теперь обозначить разряды двоичных чисел, начиная с крайнего справа, соответственно как А, В и С (табл. 1.17), то последовательность перекладывания дисков, обеспечивающая решение головоломки при трех дисках, будет такой: при п-м ходе перекладывается диск, имя которого совпадает с именем разряда, в котором появляется новая цифра 1 (табл. 1.18).

        Таблица 1.16             Таблица 1.17                                                 Таблица 1.18

п

Цифры

 

п

Цифры

 

п

Цифры

Перекладывается диск

1

О

о

1

1

О

о

1

1

О

о

1

 

2

о

1

О

2

о

1

О

 

 

 

 

 

З

о

1

1

з

о

1

1

З

о

1

1

 

4

1

О

О

4

1

О

О

4

1

о

о

 

5

1

о

1

5

1

о

1

5

1

о

1

 

6

1

1

О

6

1

1

О

6

1

1

О

в

7

1

1

1

7

1

1

1

7

1

 

 

 

с

Можно также сказать: самая правая единица в двоичном числе.

Читатель может самостоятельно убедиться в правильности сделанных выводов, а также определить последовательность перекладывания дисков в случае, когда их 4.

1.16. Задача Иосифа Флавия — частный случай

Задача, которую называют задачей Иосифа Флавия, основана на легенде о том, что известный историк 1-го века н. э. Иосиф Флавий выжил и стал известным благодаря математической одаренности. В ходе Иудейской войны он в составе отряда из 41 иудейского воина был загнан римлянами в пещеру. Предпочитая самоубийство плену, воины решили выстроиться в круг и последовательно убивать каждого третьего из еще остающихся в живых до тех пор, пока не останется живым ни одного человека . Однако Иосиф, наряду с одним из своих единомышленников, счел подобный конец бессмысленным и быстро вычислил спасительные места в круге, на которые поставил себя и своего товарища.

Эта «мрачная» по смыслу задача у нас в стране более известна как «задача о считалке». Во многих играх (прятки и др.), чтобы выяснить, кому «водить», кто-либо из играющих произносит недлинный стихотворный текст «считалку». Играющий, на которого попадает последнее слово текста, выходит из круга, а затем считалку повторяют для оставшихся. Кто последним останется в кругу, тому и «водить».

В общем виде эта задача формулируется так: «По кругу размещены п человек. Задан параметр расчета К, т. е. каждый К-й человек будет выбывать из круга. Требуется определить Р — порядковый номер человека, который останется в круге последним» .

Предлагаем читателю решить эту задачу для частного случая, когда К = 2. Обратим внимание, что при этом нет необходимости разрабатывать программу на каком-либо языке программирования — задача может быть решена просто путем рассуждений.

Указания к решению. Сначала рассмотрите вариант, когда значение п есть степень двойки, а затем исследуйте общий случай.

1.17. Игра «ним»

Эта игра была известна еще в Древнем Китае. Играют в нее вдвоем, используя камешки, монеты, спички и т. п. В наиболее известном варианте «нима» 12 предметов выкладывают в три ряда так, как показано на рис. 1.8. Правила игры просты. Игроки по очереди

По-видимому, предполагалось, что последний должен был убить себя сам.

о о о

Рис. 1.8

забирают по одному или по нескольку предметов из любого ряда. Выигрывает тот, кто возьмет последний предмет .

Подумав и/или рассмотрев несколько возможных ходов, вы наверняка обнаружите, что добиться победы можно, если оставить сопернику два одинаковых ряда предметов (с одним и тем же количеством предметов в каждом ряду), если в каждом ряду будет находиться более одного предмета. Выиграть можно и в том случае, если в первом ряду останется один, во втором два, а в третьем — три предмета. Тот, кто начинает игру, наверняка побеждает, если первым ходом он забирает два предмета из верхнего ряда, а затем рационально продолжает игру.

Казалось, что анализ столь простой игры не может привести к каким-либо неожиданностям, однако в начале ХХ в. было сделано удивительное открытие. Обнаружилось, что «ним» допускает обобщение на любое число рядов с любым числом фишек в каждом ряду и что с помощью простой стратегии, используя двоичную систему счисления, любой желающий может стать непобедимым игроком. Полный анализ и доказательство существования оптимальной стратегии этой игры впервые опубликовал в 1901 г, Чарлз Л. Бутон, профессор математики Гарвардского университета (CLIIA). Именно Бутон и назвал игру «ним» — от устаревшей формы английских глаголов «брать», «взять» .

Каждую комбинацию предметов в обобщенной игре Бутон назвал «опасной» или «безопасной». Если позиция, создавшаяся после очередного хода игрока, гарантирует ему выигрыш, то она называется «безопасной»; в противном случае позиция называется «опасной». Так, при игре в «ним» по описанной выше схеме «З, 4, 5» (см. рис. 1.8) первый игрок окажется в «безопасной» позиции, взяв два предмета из верхнего ряда. Любую «опасную» позицию, сделав соответствующий ход, всегда можно превратить в «безопасную», а каждая «безопасная» позиция становится «опасной» после любого хода. Следовательно, рациональная игра заключается в том, чтобы каждый раз превращать «опасную» позицию в «безопасную» (выигрышную).

Можно играть и наоборот: считать того, кто возьмет последний предмет, проигравшим.

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

Записывая в двоичной системе число предметов в каждом ряду, расставленных по схеме «З, 4, 5» , мы получим табл. 1.19.

Таблица 1.19

Количество дметов

Двоичная запись числа

з

 

1

1

4

1

О

О

5

1

о

1

Сумма цифр

2

1

2

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

Если в каждом ряду стоит не более 31 фишки, то любую позицию легко проанализировать, использовав в качестве «вычислительной машины» (работающей в двоичной системе!) пальцы левой руки. Предположим, что в начальной позиции в первом ряду стоит 7, во втором — 13, в третьем — 24 и в четвертом — 30 фишек. Вы должны сделать первый ход. «Опасна» или «безопасна» исходная позиция? Поверните левую руку с растопыренными пальцами ладонью к себе. Большой палец будет означать коэффициент при 16, указательный — коэффициент при 8, средний при 4, безымянный — при 2 и мизинец — коэффициент при 1. Чтобы ввести в вашу «вычислительную машину» число 7, сначала нужно загнуть палец, соответствующий наибольшей степени двойки, входящей в 7. Такой степенью является 4, поэтому вы загибаете средний палец. Продолжая двигаться направо, добавляйте степени двойки до тех пор, пока в сумме не получится 7. Для этого потребуется загнуть средний, безымянный пальцы и мизинец. Три остальных числа — 13, 24 и 30 — вводятся в вашу «вычислительную машину» точно так же, но, поскольку вам требуется вычислить сумму чисел, стоящих в столбцах при одной и той же степени двойки, вы, дойдя до согнутого пальца, который вам нужно согнуть еще раз, просто разгибаете его.

 

32

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

Задача

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

Для игры в «ним» позже были созданы специальные машины. Одним из создателей первой машины такого рода был Эдвард Н. Кондон. Машина была запатентована в 1940 г. под названием «Ниматрон»; ее построила фирма «Вестингауз». «Ниматрон» экспонировался на Всемирной выставке в Нью-Иорке, он сыграл 100 ООО партий и 90 ООО из них выиграл. Причем ббльшая часть проигрышей была намеренно подстроена экскурсоводом, чтобы доказать скептикам, что и машину можно победить.

В 1941 г. существенно усовершенствованную машину для игры в «ним» спроектировал Рэймонд М. Редхеффер. Емкость памяти машины Редхеффера была такой же, как и у машины Кондона (четыре ряда с семью фишками в каждом), но «Ниматрон» весил целую тонну и для его изготовления требовались дорогостоящие реле. Машина же Редхеффера весила несколько килограммов, а для ее изготовления достаточно было четырех вращающихся переключателей.

Возможны и другие варианты «нима». Среди полностью изученных вариантов игры в «ним» особый интерес представляет вариант, предложенный в 1910 г. американским математиком Элиакимом Х. Муром. Правила этой игры во всем совпадают с правилами обычного «нима», с той лишь разницей, что в варианте Мура игроки могут брать из любого ряда не более К фишек, где К — некоторое заранее заданное число. Любопытно заметить, что анализ «безопасности» позиции с помощь двоичных чисел оказывается применимым и в этом случае, если «безопасной» называть такую позицию, в которой сумма двоичных цифр в каждом столбце делится без остатка на (К + 1).

33

1.18. «Шоколадка»

апааав

 

 

а•аава вшаааа аааааа

«На закуску» (в заключение этой главы) автор хочет угостить читателя « шоколадкой » еще одной игрой. Чтобы сыграть в нее, возьмите шоколадку, — а если у вас ее нет, то нарисуйте ее на листе бумаги, как это сделано на рис. 1.9.

Игра состоит в том, что двое игроков по очереди разламывают шоколадку по какой-нибудь прямой, делящей ее на дольки, и съедают ту часть, которая не содержит отмеченной дольки. (Если шоколадка нарисована, то соответствующую ее часть заштриховывают.) Проигрывает тот, кто не сможет сделать очередной ход,      Рис. 1.9

т. е. ему остается лишь одна отмеченная долька.

Существует ли в этой игре выигрышная стратегия, т. е. может ли начинающий игру обязательно довести ее до победы?

Счетные веревки

Еще в древности людям приходилось считать предметы, домашних животных, а затем и деньги. Первые обитатели Южной Америки при счете использовали особые счетные веревки, изготовленные из шерсти (как правило, ламы) или из листьев агавы. На них узелки разного типа соответствовали разным числам.

Первый урок английского языка в школе.

Учитель: «Кто из вас, дети, знает буквы английского алфавита? »

Сын программиста: «Я!».

— Пожалуйста, назови их по порядку.

2—1523


Перемещение предметов

и... животных

знакомившись с данной главой, вы не только решите ряд интересных задач, но и:

1)                  увидите, что с помощью алгоритма любой процесс, даже не очень сложный, распадается на достаточно длинную последовательность простых и однообразных операций;

2)                  научитесь делать из мухи слона... вернее, из «апельсина» — «собаку»;

З) узнаете несколько методов, позволяющих отсортировать некоторый набор чисел;

4) узнаете, когда наступит конец света (О) и что такое рекурсия.

2.1. Выкатить шарики

В узком желобе размещены 8 шариков: слева — четыре белых, а справа — четыре черных (вид желоба сверху показан на рис. 2.1).

Диаметр белых шариков чуть-чуть меньше диаметра черных. В средней части желоба в стенке имеется небольшая ниша, в которой может разместиться только один шарик (любой). Два шарика

Рис. 2.1

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

Разработайте алгоритм, по которому можно выкатить из желоба все белые шарики. В этом алгоритме можно использовать следующие команды:

1)                переместить черный шарик М... влево (сокращенное обозначение команды — TAN<—, где лк — номер шарика);

2)                переместить черный шарик   вправо

З) переместить черный шарик М... в нишу (чгчТ); 4) переместить черный шарик М... из ниши (ЧГ4Ј)•,

5)переместить белый шариквлево (БН<—);

6)


переместить белый шарик М... вправо (БЫ»); 7) переместить белый шарик в нишу (БЫТ);

8) переместить белый шарик М... из ниши (ы“).

2.2. Восемь монет

Восемь монет выложены в ряд (рис. 2.2):

оооооооо

                                1        2        з        4        5        6        7       8

Рис. 2.2

Надо собрать их в две группы по 4 монеты в каждой группе (в которой монеты, например, лежат одна на другой), перекладывая за каждый ход одну монету. При этом перекладываемую монету можно соединять лишь с монетой, отделенной от нее двумя монетами (разрозненными или объединенными в группу).

Разработайте алгоритм решения этой задачи, используя в нем команды типа «З к 6», где З — номер перекладываемой монеты, а 6 — номер монеты, на которую кладется перекладываемая.

2.3. Шесть монет

На ровной гладкой поверхности (например, на столе) выложен треугольник из шести монет (рис. 2.3а). Требуется за наименьшее число ходов переложить монеты так, чтобы они образовали кольцо, показанное на рис. 2.36.

                                а)                                  б)

Рис. 2.3


Каждый ход состоит в передвигании только одной монеты. Сдвигать при этом другие монеты нельзя. В новом положении каждая монета должна касаться двух других монет. Поднимать монеты с поверхности стола при решении задачи не разрешается.

При разработке алгоритма используйте команды типа: «1 к (3, 6) » , где 1 — номер перекладываемой монеты, а З и 6 — номера монет, к которым кладется перекладываемая.

2.4. Еще две задачи на перекладывание монет

2.4.1. Десять монет расположены в виде

О

равностороннего треугольника (рис. 2.4). Необходимо переложить три монеты на

оо

новые места так, чтобы снова получился

о оо

равносторонний треугольник.

оооо

Рис. 2.4

 

2.42. Из рис. 2.5 видно, что девять монет можно расположить в восемь рядов по

0 0 0

три монеты в каждом, т. е. можно указать восемь прямых линий, на каждой из

0 0 0

которых лежат центры трех какихнибудь монет.

Как за минимальное число перекла-

0 0 0

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

Рис. 2.5

сять рядов по три монеты в каждом?


37

2.5. задачи со спичками

2.5.1. Собрать в группы по 2

Десять спичек выложены в один ряд (рис. 2.6).

                           1       2      з       4       5       6       7      8         9 10

Рис. 2.6

Требуется распределить их в 5 пар, перекладывая по одной спичке через две соседние (например, можно спичку .N2 1 переложить к спичке 4 и т. д. — см. рис. 2.7).

Рис. 2.7

При разработке алгоритма решения этой задачи используйте команды типа: «1 к 4», где 1 — номер перекладываемой спички, а 4 — номер спички, к которой кладется перекладываемая.

2.5.2. Собрать в группы по З

15 спичек выложены в один ряд, как показано на рис. 2.8.

         1      2      з      4      5                   610 11 1214 15

Рис. 2.8

Необходимо собрать их в 5 групп (кучек) по З спички в каждой. Перекладывать спички можно только по одной, каждый раз «перескакивая» через З спички.

При разработке алгоритма решения задачи используйте команды типа: «6 к 10», где 6 — номер перекладываемой спички, а 10 — номер спички, к которой кладется перекладываемая.

2.6. Переставить шашки

2.6.1. На листе бумаги нарисуйте 10 клеток и положите в них 6 шашек, как показано на рис. 2.9.

Рис. 2.9

Переместите шашки так, чтобы они оказались в тех же шести клетках, но сначала слева — все черные, а вслед за ними — все белые. При этом перемещать на свободное место нужно сразу две шашки, не меняя порядка, в котором они лежат.

Решите также эту задачу для случая, когда 4 свободные клетки располагаются справа.

2.62. В 8 клетках лежат 8 шашек в ряд попеременно белая, черная, белая, черная и т. д. (рис. 2.10). Слева есть также две свободные клетки.

Рис. 2.10

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

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

2.6.3. Решите предыдущую задачу для 10, 12 и 14 шашек.

2.6.4. Две белые и две черные шашки расположены так, как показано на рис. 2.11.

                                             1       2         з        4        5

Рис. 2.11

Требуется переставить черные шашки в клетки с номерами 4 и 5, а белые — в клетки с номерами 1 и 2 с соблюдением следующих условий:

1)                       каждая шашка может «перескочить» в соседнюю клетку или через одну клетку, но не дальше;

2)                       никакая шашка не должна возвращаться в клетку, где она уже побывала;

З) в каждой клетке не должно быть более одной шашки; 4) начинать надо с белой шашки.

Считать при этом, что других клеток (кроме пяти имеющихся) нет.

2.6.5. Соблюдая условия предыдущей задачи, решите ее:

а) для шести шашек (рис. 2.12): требуется переставить белые шашки в клетки с номерами 1, 2, и З, а черные — в клетки с номерами 5, 6 и 7;

о

о о

 

000

                                   1       2         з        4        5        6        7

Рис. 2.12

б) для восьми шашек (рис. 2.13): требуется переставить белые шашки в клетки с номерами 1, 2, З и 4, а черные — в клетки с номерами 6, 7, 8 и 9.

 

 

 

 

 

0000

                         1        2         з         4         5        6         7        8        9

Рис. 2.13

2.7. Девять шашек

Пронумеруйте девять шашек числами от 1 до 9. Расставьте шашки на специальном поле, изображенном на рис. 2.14, так, чтобы номера шашек и клеток совпадали; только шашку с номером 1 поместите в клетку .N2 10, а клетку .N2 1 оставьте свободной.

                    1        2         з        4         5        6        7        8        9       10

Рис.


Разработайте алгоритм решения следующей задачи: не вынимая шашки из клеток, а только перемещая их, требуется перевести шашку с номером 1 в клетку 1. При этом можно временно ставить по одной шашке в клетки А, Б и В; перепрыгивать одной шашкой через другую нельзя. Когда шашка с номером 1 перейдет на свое место — в клетку N2 1, то и все остальные шашки должны оказаться на своих прежних местах, т. е. так, чтобы номера шашек и клеток совпадали. При этом используйте в алгоритме команды типа: «т—п» , где первое число т показывает номер шашки, а второе число п (а в ряде случаев — буква) указывает номер клетки, в которую ставится эта шашка.

2.8. «Уголки»


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

                               а        Ь        с         d        е

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

оооа•п••

 

 

 

 

 

 

 

 

оооопппп

8

7

6

5

4

з

2

1

Рис.

Решите следующую задачу: за наименьшее число ходов надо переставить по правилам игры «Уголки» четыре шашки из левого нижнего угла доски (полей al, а2, bl, b2) в правый верхний угол.

2.9. Перемещение лошадей

В конюшне устроены девять стойл в один ряд (рис. 2.16).

 

О

 

О

 

О

 

О

 

О

 

О

 

О

 

О

                   1          2          з          4          5          6          7          8          9

Рис. 2.16

В стойлах с номерами 1, 2, З и 4 находятся черные лошади, в стойлах 6, 7, 8 и 9 — белые; пятый номер не занят. Требуется поменять местами белых и черных лошадей при следующих условиях:

1)                       каждая лошадь может переходить только в ближайшее стойло или в соседнее с ним, но не дальше;

2)                      


никакая лошадь не должна возвращаться на прежнее место; З) в каждом стойле не может быть больше одной лошади.

Начинать перемещение нужно с белой лошади.

При разработке алгоритма решения этой задачи используйте команды типа: т в п, где первое число т показывает номер стойла, из которого перемещается лошадь, а второе число п — номер стойла, в которое она перемещается.

2.10. В зоопарке

Из-за ошибок служителей зоопарка звери оказались не в своих клетках (рис. 2.17).

Примечание. В верхней части рис. 2.17 указаны надписи на клетках. Буквами П, Т, О, Л и В обозначены животные (соответственно, пантера, тигр, осел, лев и волк), на самом деле находящиеся в той или иной клетке.

                      1. Лев       2. Осел      з. волк       4. Тигр 5. Пантера

Рис,

Работнику зоопарка необходимо как можно быстрее разместить животных в их «правильных» клетках. Каким должен быть алгоритм действий этого работника? Поскольку все звери, кроме осла, хищники, их нельзя помещать вдвоем в одну клетку, а при выводе какого-то животного из клетки в общий вольер его можно оставить там или переместить только в соседнюю клетку (в последнем случае в общем вольере может находиться еще один из зверей).

2.11. Перестановка коней

Эта задача придумана итальянцем Гуарини еще в XVI в.

В углах шахматной доски З х З стоят два белых и два черных коня (рис. 2.18).

Как поменять черных и белых коней за наименьшее число их перемещений по правилам шахмат?

2.12. Перемещаем карточки, или как апельсин превратить в собаку

42


На листе бумаги нарисованы 15 клеток (рис. 2.19).

Рис. 2.19

В них лежат 8 карточек с буквами, образующих слово АПЕЛЬСИН (рис. 2,20).

А вот и еще одна похожая задача. Вам, конечно, известно, выражение «Делать из мухи слона» . Попробуйте сделать из слова «муха» слово «слон», последовательно заменяя только одну букву. Порядок следования букв при этом менять нельзя.


 

 

 

 

 

п

 

 

 

л

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

с

 

 

 

 

и

 

н

 

                      Рис. 2.20                                                            Рис. 2.21

Требуется, перекладывая карточки в соседнюю свободную клетку, за минимальное количество перекладываний получить слово СПАНИЕЛЬ (рис. 2.21).

Решите также аналогичную задачу со словом ПЕРЕПРАВА (рис. 2.22, 2.23).

 

п

 

 

 

 

 

 

 

 

 

ооао•аааа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в

 

 

 

                                 Рис. 2.22                                                                            Рис. 2.23

2.13. Еще 8 задач на перемещение карточек

Следующие 8 задач на перемещение карточек отличаются от предыдущих тем, что в них новые слова должны быть расположены в тех же клетках, что и исходные (рис. 2.24—2.39).

 

 

 

 

 

 

 

 

 

Р

Е

с

 

С

Р

Е

 

 

 

 

 

 

 

 

 

 

                    Рис. 2.24                                                               Рис. 2.25

                    Рис, 2,26                                                               Рис. 2.27

                    Рис. 2.28                                                               Рис. 2.29

                    Рис. 2.30                                                               Рис. 2.31

                    Рис. 2.32                                                               Рис. 2.33

 

 

 

 

 

 

 

 

 

 

 

 

В

о

Д

о

 

А

д

 

П

о

д

В

о

 

 

 

 

 

 

 

 

                    Рис. 2.34                                                               Рис. 2.35

                    Рис. 2.36                                                               Рис. 2.37

                                 Рис. 2.38                                                                           Рис. 2.39

2.14. Упорядочить карточки

В ряд выложены карточки, на которых записаны числа: 7, 8, 9, 4, 5, 6, 1, 2, З. Разрешается взять несколько подряд лежащих карточек и переставить их в обратном порядке. За четыре такие операции добиться расположения карточек: 1, 2, З, 4, 5, 6, 7, 8, 9 можно так, как показано в табл. 2.1 (жирным курсивом отмечены номера карточек, место расположения которых изменилось).

Таблица 2.1

Исходное состояние

7

8

9

4

5

6

1

2

з

1. Переставляем все 9 карточек

 

2

1

б

5

4

9

8

7

2. Переставляем карточки З, 2, 1

1

2

з

6

 

 

9

 

 

З. Переставляем карточки 6, 5, 4

 

 

 

 

 

 

 

 

 

4. Переставляем карточки 9, 8, 7

 

 

 

 

 

 

 

 

 

Ответьте на вопрос: можно ли решить эту задачу за три операции?

2.15. Сортировка, или «По ранжиру — стройся!»

Сортировкой называют процесс размещения заданного множества объектов в определенном порядке, — в частности процесс размещения множества чисел в порядке их возрастания или убывания.

 

46

Зачем нужна сортировка? Очевидно, что с отсортированными данными в ряде случаев работать легче, чем с произвольно расположенными. Когда элементы отсортированы, их проще найти (например, как в телефонном справочнике, в словаре либо в файловых панелях программы Windows Commander или FAR Manager), обновить, исключить, добавить в список и слить воедино. В отсортированных данных легче определить, имеются ли пропущенные элементы, и удостовериться, что все элементы были проверены. Легче найти общие элементы двух множеств, если оба множества уже были отсортированы. Сортировка является мощным средством ускорения работы программ, в которых часто нужно обращаться к определенным элементам. Так что если вы хотите стать программистом, то вам обязательно надо знать методы сортировки. В настоящее время известно большое число методов сортировки наборов чисел, из которых мы рассмотрим несколько наиболее простых,

2.1511. Сортировка выбором

Проиллюстрируем этот метод на примере десяти карточек с числами (рис. 2.40).

13

 

44

 

7

Рис. 2.40

Как упорядочить эти карточки по возрастанию чисел? Ответ достаточно очевиден. Надо:

1)  найти карточку с минимальным числом;

2)  положить ее где-то отдельно на первом месте;

З) затем найти карточку с минимальным числом из остав-

ШИХСЯ;

4) разместить ее на втором месте (справа от ранее положенной первой); и т. д. В конце оставшуюся 10-ю карточку (с числом 44) остается разместить на последнем, 10-м, месте в уже упорядоченной последовательности карточек.

В общем виде описанный алгоритм выглядит следующим образом:

цикл для i от 1 до 10

1        . Найти карточку с минимальным числом

2        . Разместить ее в отдельной последовательности на месте конец цикла

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

цикл для -i от 1 до п

1        . Определить минимальный элемент массива

2        . Записать его на место в дополнительном массиве З . В исходном массиве на месте минимального элемента записать ” большое ” число кц

Нетрудно убедиться, что описанный метод приведет к получению упорядоченной последовательности чисел и в случае, когда в исходной последовательности есть одинаковые значения.

А можно ли решить задачу, если дополнительного места для размещения карточек с упорядоченными числами нет (в программе — без использования дополнительного массива)? Можно, и делается это так:

1)               просматривая все карточки, найти карточку с минимальным числом;

2)               поменять ее местами с первой карточкой;

З) просматривая карточки, начиная со второй, найти карточку с минимальным числом;

4) поменять ее местами с карточкой, находящейся на втором месте;

5) просматривая карточки, начиная с третьей, найти карточку с минимальным числом;

17)                  просматривая карточки, начиная с предпоследней, найти карточку с минимальным числом;

18)                  поменять найденную карточку с карточкой, находящейся на девятом месте.

В общем виде такой вариант алгоритма сортировки для 10 карточек оформляется следующим образом:

цикл для -i от 1 до 9

1 . Среди карточек, находящихся на местах от ј—го до 10-го, найти карточку с минимальным числом

2. Поменять найденную карточку с карточкой, находящейся на месте конец цикла

Преимущества такого варианта метода выбора оцените самостоятельно.

Задачи

1.  Разместите 15 карточек с числами случайным образом и отсортируйте их двумя описанными выше вариантами метода выбора по убыванию чисел.

2.  Если вы владеете каким-либо языком программирования, то разработайте программы сортировки числового массива по возрастанию чисел методом выбора (два варианта).

2.15.2, Сортировка вставками

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

Открываем вторую карточку и сравниваем число на ней (щ) с числом на первой карточке Если < щ, то поменяем карточки местами (рис. 2.41), в противном случае оставляем все как есть.

з

 

10

Рис. 2.41

Итак, две карточки уже отсортированы. Открываем третью карточку (рис. 2.42) и размещаем ее так, чтобы числа на всех трех карточках были упорядочены (рис. 2.43).

                                 Рис. 2.42                                                                          Рис. 2.43

Возможно, для этого третью карточку потребуется оставить на том же самом месте, если она уже лежит «правильно».

 

49

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

Рис. 2.44

Итак, можно сформулировать общее правило (алгоритм) сортировки всех карточек: надо последовательно открывать по одной карточке, начиная со второй, и размещать их так, чтобы последовательность чисел на уже открытых карточках была упорядоченной при ее просмотре слева направо. Такой метод сортировки называют «сортировкой вставками» или «сортировкой включениями». Кстати, аналогичный метод упорядочивания используют игроки в карты.

Разместить очередную карточку на соответствующем ей месте в предыдущей, уже упорядоченной, последовательности при этом можно по-разному. Можно (и, наверное, вы, читатель, так и делали), просматривая открытые числа слева направо, найти место, которое должна занимать размещаемая карточка, положить ее там, а карточку, которая ранее занимала это место, и все карточки справа от нее вплоть до той, которая предшествует перемещаемой, — сместить вправо на одну позицию. Например, для ситуации, показанной на рис. 2.45, описанные перемещения приведут к ситуации, представленной на рис 2.46.

10

 

16

 

17

 

13

Рис. 2.45

13

 

16

 

17

 

10

Рис. 2.46

Можно поступить и по-другому — многократно сравнивать число на размещаемой карточке с числом на предыдущей карточке и менять эти карточки местами до тех пор, пока слева от размещаемой карточки не окажется число, меньшее или равное числу на ней, или пока размещаемая карточка не окажется на первом месте.

50

Задачи

1.  Разместите 15 карточек с числами случайным образом и отсортируйте их по возрастанию чисел методом вставок, используя оба варианта помещения очередной карточки на требуемое место.

2.  На известном вам языке программирования разработайте программы сортировки числового массива по убыванию чисел методом вставок (два варианта).

2,153, Сортировка обменом

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

Проиллюстрируем этот метод на примере сортировки десяти карточек с числами по убыванию их значений. Будем, как и в предыдущем случае, считать, что все карточки лежат «числами вниз» .

Открываем первую и вторую карточки (рис. 2.47) и сравниваем числа на них. Так как число на первой карточке меньше, чем на второй, то меняем карточки местами (рис. 2.48).

                                    Рис. 2.47                                                                       Рис. 2.48

Открываем третью карточку (рис. 2.49). Так как 6 > З, то меняем местами вторую и третью карточки (рис. 2.50).

8

 

З

 

6

 

8

 

6

 

З

                                    Рис. 2.49                                                                       Рис. 2.50

Открыв четвертую карточку (рис. 2.51), видим, что здесь ничего менять не надо.

Рис. 2.51

Если на остальных карточках записаны числа, показанные на рис. 2.52, то после соответствующих обменов мы получим ситуацию, изображенную на рис. 2.53 (убедитесь в этом сами).

Рис. 2.52

Рис. 2.53

Стали ли числа на карточках упорядочеными? Еще нет. Но видно, что карточка с самым маленьким числом заняла «положенное ей» место (последнее). Кроме того, некоторые карточки (с небольшими числами, в частности З и 2) сместились вправо. Если теперь повторить процесс сравнения соседних карточек (последнюю карточку при этом можно уже не учитывать), то в результате «правильное» место займет карточка с числом 2 (рис. 2.54).

Рис. 2.54


Ясно, что после девятого прохода все карточки станут отсортированными (рис. 2.55).

зо

 

25

 

8

 

7

 

6

 

4

 

з

 

з

 

2

 

1

Рис. 2.55

Если теперь последовательность сортируемых карточек расположить вертикально (первая слева карточка внизу) и проследить за перемещением карточек (рис. 2.56), то можно увидеть, что карточки с минимальными значениями, подобно пузырькам воздуха в воде, «всплывают» на соответствующую им позицию. Поэтому сортировку таким способом также называют «сортировкой методом пузырька» или «пузырьковой сортировкой».

Задачи

1.  Разместите 15 карточек с числами случайным образом и отсортируйте их по возрастанию чисел, используя метод обмена.

2.  На известном вам языке программирования разработайте программы сортировки числового массива по убыванию и по возрастанию чисел методом обмена,

З. Возникает вопрос: всегда ли для упорядочивания десяти карточек требуется 9 проходов? Получите ответ на него, проведя несколько экспериментов с десятью карточками, представленными на рис. 2.52, но с другим исходным порядком их размещения.

52

Рис. 2.56

2,16, Ханойские башни

Эта головоломка известна уже довольно давно. Ее автором принято считать французского математика Э. Люка, создавшего головоломку на основе древних легенд. В русской литературе она впервые появилась в 1902 г. в книге Е. И. Игнатьева «В царстве смекалки» .

Если вы возьмете детскую пирамидку (диски в ней располагаются по возрастанию: верхний — самый маленький, а нижний — самый большой) и еще два стержня от таких же детских пирамидок, то головоломка — уже у вас в руках (рис. 2.57).

Пронумеруем стержни: тот, на котором находятся диски, получит номер 1, а другие — номера П и III. Задача состоит в том, чтобы перенести диски со стержня I на стержень Ш, используя

Рис. 2.57

 

53

стержень П как промежуточный. При этом должны соблюдаться три условия:

1)  за один ход можно переносить лишь один диск;

2)  нельзя класть больший диск на меньший;

З) снятый диск нельзя отложить в сторону — он должен быть надет на один из стержней.

Согласно легенде, в древнем Ханое стоит храм, в котором на одном из трех алмазных стержней надеты 64 золотых диска, и монахи без устали, сменяя друг друга, переносят диски с одного стержня на другой в соответствии с описанными правилами. Когда монахи перенесут все диски с первого стержня на третий, как гласит легенда, наступит конец света.

Давайте попробуем справиться с этой головоломкой.

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

14)

15) П  ш.

Конечно, вы наверняка сможете решить задачу и при большем числе дисков.

А каким должен быть алгоритм не в конкретном, а в общем случае, когда количество дисков равно некоторому числу К?

Чтобы ответить на этот вопрос, давайте разберемся, как перенести диски с первого стержня на третий, а заодно выясним, скоро ли наступит обещанный конец света.

Смысл этого действия, конечно, понятен.

54

Если бы в пирамиде был только один диск, то решение очевидно — перенести его на третий стержень, и дело с концом. При этом мы выполнили требуемое задание за один ход. А если бы было два диска? Тогда сначала надо положить меньший диск на второй стержень, затем перенести второй диск на третий стержень, а потом перенести меньший диск на третий стержень, положив его поверх второго. Итого за три действия мы смогли переложить оба диска на третий стержень. Заметим, что 1 = 21 1 , а з = 2 2 — 1. При трех дисках мы можем сначала перенести два верхних на второй стержень (ведь подобную задачу мы только что решили), потом оставшийся нижний (самый большой) диск перенести на третий стержень, а затем на него же можно перенести те два диска, которые находятся на втором стержне.

Теперь предположим, что мы умеем перекладывать на третий стержень пирамиду из п дисков за (2 п — 1) действие. Покажем, что в этом случае можно перенести на третий стержень и пирамиду из (п + 1) дисков за (2 п + 1 — 1) действие.

Пусть на пирамиде лежит (п + 1) дисков. Временно изменим нумерацию стержней: второй назовем третьим, а третий вторым. Теперь мы можем перенести п верхних дисков с первого стержня на третий (уже в новой нумерации!), произведя (2 п 1) действие, а на первом стержне останется лишь один диск. Перенесем его на свободный второй стержень. Снова перенумеруем стержни: вернем второму стержню номер три, первому дадим номер два, а третьему присвоим номер один. Теперь у нас на первом стержне лежит п дисков, второй — свободен, а на третьем лежит самый большой диск. Осталось перенести с первого стержня на третий п дисков, что мы умеем делать за (2 п — 1) операцию. Вот и все! Мы собрали на третьем стержне все (п + 1) дисков, совершив  1)) = (2+ 1 — 1) действие.

Отсюда, в соответствии с принципом математической индукции, вытекает, что для любого натурального числа К можно, имея пирамиду с К дисками, перенести их с первого стержня на третий, соблюдая правила, за (2 1) действие.

Учитывая все сказанное, можно предложить следующий алгоритм решения задачи при К дисках:

алг Перемещение дисков (К дисков)

1 то

Переносим его иначе

Используем этот же алгоритм, но с К 1 верхними дисками


Нетрудно показать, что меньше чем за (2 1) действие перенести К дисков с первого стержня на третий невозможно. Поэтому легендарным жрецам понадобится (264— 1) действие, чтобы завершить свою работу. И если тратить на каждое действие лишь по одной секунде, то понадобится 18 446 744 073 709 551 615 секунд,

т. е. более 500 миллиардов лет! Так что до конца света еще очень далеко 9.

Мы же в заключение заметим, что прием, когда какая-то задача сводится к такой же задаче, но с другими исходными данными (в нашем случае — с другим количеством дисков), в программировании называют рекурсией. Более детально о рекурсии будет рассказано в главе 9.

Идет урок русского языка.

Учитель: «Как пишется частица не с глаголами: слитно или раздельно?)

Сын программиста: «Через пробел!»

64 задачи для Водомера

ТТ меется исполнитель, который мы назовем Водомером , так МЛ как он занимается отмериванием того или иного количества воды. У него есть источник воды (река, озеро или т. п.), количество воды в котором не ограничено, и две или три емкости (банки, ведра или т. п.): А и В или А, В и С.

При наличии двух емкостей система команд, которые может выполнять Водомер, будет такой:

*     Наполнить А. К2. Наполнить В.

Перелить из А в В. Перелить из В в А.

*     Вылить из А. Кб. Вылить из В.

Примечание для учителя: задачи данной главы могут быть использованы для организации классных или школьных конкурсов по информатике или математике. В этом случае все задачи целесообразно сгруппировать в задания для шести туров (рекомендуемое количество задач по турам: б, 12, 12, 14, 12 и 8).

«Водомер» — предложенное автором название исполнителя, который в других источниках носит название «Водолей» или «Переливашка». Логично: ведь этот исполнитель занимается именно отмериванием воды,— не так ли 9?

При наличии трех емкостей система команд Водомера будет существенно больше, хотя по смыслу набор операций в ней аналогичен приведенному выше:

Наполнить А.

К2.

Наполнить В.

Наполнить С.

Перелить из А В  Перелить из А   

Кб.

Перелить из в         

к7.

Перелить из В        

КВ.

Перелить из С в А.

к9.

Перелить из С в в.

км.

вылить из А.

Вылить из В.

k12.

Вылить из С.

Требуется составить алгоритмы решения следующих задач, которые должен решить Водомер. Если иное не оговорено особо, то задачанолжна решаться за минимально возможное количество действий .

3.1. Объем емкости А равен З л, а емкости В — 4 л. Надо отмерить

3.2. Объем емкости А равен З л, а емкости В — 10 л. Надо отмерить 5 л.

3.3. Объем емкости А равен 4 л, а емкости В — 10 л. Надо отмерить

3.4. Объем емкости А равен 5 л, емкости В — 10 л, а емкости С — 12 л. Надо отмерить 4 л.

3.5. Объем емкости А равен 5 л, емкости В  10 л, а емкости С 12 л. Надо отмерить 1 л.

3.6. Объем емкости А равен 4 л, емкости В  5 л, а емкости С — 10 л. Надо отмерить 7 л.

3.7. Объем емкости А равен З л, емкости В — 5 л, а емкости С 8 л. Надо отмерить 7 л.

3.8. Объем емкости А равен З л, емкости В — 5 л, а емкости С 10 л. Надо отмерить 9 л.

Среди предложенных имеются задачи с одинаковыми исходными данными и одинаковым требуемым результатом, но отличающиеся условиями получения результата (минимальное количество операций или минимально возможное количество используемой воды — см., например, задачу 3.9).

58

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

3.9. Объем емкости А равен З л, емкости В — 5 л, емкости С 11 л. Надо отмерить 9 л, использовав минимально возможное количество воды (здесь и далее в аналогичных задачах имеется в виду общий объем воды, используемой при выполнении команд Наполнить А, Наполнить В и Наполнить С).

3.10. Объем емкости А равен З л, емкости В — 6 л, а емкости С 11 л. Надо получить 4 л в емкости С.

3.11. Объем емкости А равен З л, емкости В — 10 л, а емкости С 11 л. Надо отмерить 9 л.

3.12. Объем емкости А равен З л, емкости В — 7 л, емкости С 12 л. Надо отмерить 11 л.

3.13. Объем емкости А равен 4 л, емкости В — 5 л, а емкости С 8 л. Надо отмерить 6 л.


3.14. Объем емкости А равен 4 л, емкости В — 5 л, а емкости С 8 л. Надо отмерить 2 л, использовав минимально возможное количество воды.

3.15. Объем емкости А равен 4 л, емкости В 7 л, а емкости С 11 л. Надо отмерить 10 л.

3.16. Объем емкости А равен 4 л, емкости В — 7 л, а емкости С 11 л. Надо отмерить 6 л.

3.17. Объем емкости А равен 4 л, емкости В — 8 л, а емкости С 9 л. Надо отмерить З л.

3.18. Объем емкости А равен 4 л, емкости В — 8 л, а емкости С 9 л. Надо отмерить 7 л.

3.19. Объем емкости А равен З л, емкости В 5 л, а емкости С 11 л. Надо отмерить 9 л.

3.20. Объем емкости А равен З л, емкости В — 6 л, а емкости С 10 л. Надо получить 2 л в емкости А.

3.21. Объем емкости А равен З л, емкости В 6 л, а емкости С 11 л. Надо отмерить 7 л, использовав минимально возможное количество воды.

3.22. Объем емкости А равен З л, емкости В — 7 л, а емкости С 10 л. Надо отмерить 2 л.

3.23. Объем емкости А равен З л, емкости В — 7 л, а емкости С 10 л. Надо отмерить 8 л, использовав минимально возможное количество воды.

12 л. Надо отмерить 10 л.

3.25. Объем емкости А равен З л, емкости В — 9 л, а емкости С 10 л. Надо получить 5 л в емкости С, использовав минимальное количество воды.

3.26. Объем емкости А равен З л, емкости В — 9 л, а емкости С — 10 л. Надо получить 8 л в емкости В, использовав минимальное количество воды.

3.27. Объем емкости А равен З л, емкости В — 9 л, а емкости С — 11 л. Надо получить 1 л в емкости С.

3.28. Объем емкости А равен З л, емкости В — 9 л, а емкости С — 11 л. Надо отмерить 10 л, использовав минимальное количество воды.

3.29. Объем емкости А равен 4 л, емкости В — 5 л, а емкости С 11 л. Надо отмерить 7 л.

3.30. Объем емкости А равен 4 л, емкости В — 7 л, а емкости С 12 л. Надо отмерить 6 л.

3.31. Объем емкости А равен 4 л, а емкости В — 9 л. Надо отмерить 7 л.

3.32. Объем емкости А равен 4 л, а емкости В — 11 л. Надо отмерить 2 л.

3.33. Объем емкости А равен 6 л, а емкости В — 14 л. Надо отмерить 10 л.

3.34. Объем емкости А равен З л, а емкости В — 8 л. Надо отмерить 1 л.

3.35. Объем емкости А равен З л, а емкости В 8 л. Надо отмерить 4 л.

3.36. Объем емкости А равен 7 л, а емкости В — 8 л. Надо отмерить З л.

3.37. Объем емкости А равен 7 л, а емкости В — 12 л. Надо отмерить 4 л.

3.38. Объем емкости А равен 5 л, а емкости В — 6 л. Надо отмерить З л.

3.39. Объем емкости А равен З л, емкости В — 6 л, а емкости С — 11 л. Надо отмерить 7 л.

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

3.40. Объем емкости А равен З л, емкости В — 6 л, а емкости С — 11 л. Надо отмерить 10 л, использовав минимальное количество воды.

3.41. Объем емкости А равен З л, емкости В — 7 л, а емкости С — 10 л. Надо получить 5 л в емкости В.

3.42. Объем емкости А равен З л, емкости В — 9 л, а емкости С — 10 л. Надо получить 5 л в емкости С.

3.43. Объем емкости А равен З л, емкости В — 9 л, а емкости С 11 л. Надо получить 1 л в емкости С, использовав минимальное количество воды.

3.44. Объем емкости А равен З л, емкости В — 9 л, а емкости С — 11 л. Надо отмерить 10 л.

3.45. Объем емкости А равен З л, емкости В — 7 л, а емкости С 10 л. Надо отмерить 8 л.

3.46. Объем емкости А равен З л, емкости В — 8 л, а емкости С 12 л. Надо отмерить 10 л, использовав минимальное количество воды.

3.47. Объем емкости А равен З л, емкости В — 9 л, а емкости С 11 л. Надо отмерить 7 л.

3.48. Объем емкости А равен 4 л, емкости В — 8 л, а емкости С — 9 л. Надо отмерить 6 л.

3.49. Объем емкости А равен 6 л, а емкости В — 10 л. Надо отмерить 2 л.

3.50. Объем емкости А равен 6 л, а емкости В 16 л. Надо отмерить 8 л.

3.51. Объем емкости А равен 6 л, а емкости В — 22 л. Надо отмерить 14 л.

3.52. Объем емкости А равен 5 л, а емкости В — 8 л. Надо отмерить 4 л.

3.53. Объем емкости А равен 7 л, а емкости В — 10 л. Надо отмерить 2 л.

3.54. Объем емкости А равен 9 л, а емкости В — 11 л. Надо отмерить 5 л.

3.55. Объем емкости А равен 5 л, а емкости В 12 л. Надо отмерить 6 л.


3.56. Объем емкости А равен 7 л, а емкости В — 9 л. Надо отмерить 1 л.

3.57. Объем емкости А равен З л, емкости В — 9 л, а емкости С — 10 л. Надо получить 8 л в емкости В.

3.58. Объем емкости А равен З л, емкости В — 9 л, а емкости С — 11 л. Надо отмерить 7 л, использовав минимальное количество воды.

3.59. Объем емкости А равен 4 л, емкости В — 5 л, а емкости С 9 л. Надо отмерить 7 л.

3.60. Объем емкости А равен 4 л, емкости В — 5 л, а емкости С 10 л. Надо отмерить 7 л, использовав минимальное количество воды.

3.61. Объем емкости А равен 4 л, емкости В — 8 л, а емкости С — 9 л. Надо отмерить З л.

3.62. Объем емкости А равен З л, емкости В — 5 л, а емкости С 11 л. Надо получить 4 л в емкости В, использовав минимальное количество воды.

3.63. Объем емкости А равен 5 л, а емкости В — 16 л. Надо отмерить 9 л.

3.64. Объем емкости А равен 5 л, а емкости В — 16 л. Надо отмерить 8 л.

Если вы решите все эти задачи, то можете считать себя чемпионом СНГ среди школьников по переливанию воды (так назывался конкурс для учащихся, проводившийся редакцией газеты « Информатика» ).

Логарифмическая линейка

Логарифмическая линейка — многофункциональный счетныи инструмент, с помощью которого с большой степенью точности можно умножать и делить, вычислять логарифмы, синусы, тангенсы, квадраты, квадратные корни и др. До появления и широкого распространения компьютерной вычислительной техники такие линейки были незаменимы при выполнении многих технических расчетов и являлись непременным инструментом инженеров.

Взвешиваем всё — от крупы до золотых монет

аже если умение разрабатывать алгоритмы нахождения фальшивых (а значит, и настоящих 9) монет не понадобится вам для выхода на свободу © (см. задачу 4.28) или для обогащения © (см. задачи 4.6 и 4.7), все равно решение таких задач является очень увлекательным занятием. Как написал в Интернете один молодой человек, «эта задача уже несколько дней не дает мне заснуть» Впрочем, начнем мы с более прозаичных вещей — с крупы, гвоздей, сахара...

4.1. Взвешивание крупы

В пакете содержится 9 кг муки. Необходимо при помощи чашечных весов с гирями распределить эту крупу по двум пакетам: в один насыпать 2 кг, а в другой — 7 кг. При этом разрешается произвести только З взвешивания. Имеется неограниченное количество гирь в 50 и 100 г.

Речь шла о задаче 4.31.

63

4.2, Как отмерить 9 кг гвоздей?

В мешке имеется 24 кг гвоздей. Как, располагая только чашечными весами без стрелок и гирь, отмерить 9 кг гвоздей?

4.3. Как отмерить 1 кг сахара?

Дан мешок сахарного песка, чашечные весы и гирька в 1 г. Можно ли за 10 взвешиваний отмерить 1 кг сахара?

4,4. Неправильные весы

Имеются неправильные весы с двумя чашками и сколько угодно любых «правильных» гирь. Как отвесить на таких весах 1 кг муки?

4.5. Потерянная гиря

Было 8 гирь весом в 1 кг, 2 кг, 8 кг, без надписей на них. Все гири выполнены из одного материала, так что чем больше вес гири, тем больше ее размер (но при этом размер не пропорционален весу). Одну из гирь потеряли. Необходимо за два взвешивания на чашечных весах выяснить, какая именно гиря потеряна.

4.6. 19 гирек

Имеются 19 гирек весом в 1 г, 2 г, З г 19 г. Одна из них — золотая, остальные «поддельные» (похожие на золотые), причем все «поддельные» гирьки выполнены из двух видов сплавов, — А (9 гирек) и Б (9 гирек). Известно, что общий вес всех гирек из сплава А на 90 г больше, чем общий вес всех гирек из сплава Б. Одному мальчику сказали, что если он найдет золотую гирьку, то получит ее в подарок. Мальчик подумал, правильно указал, какая из 19 гирек золотая, и получил ее. А смогли бы найти золотую гирьку вы?

4.7. Как оставить себе золотую монету?

Представьте, что перед вами — несколько монет, среди которых есть золотые и похожие на них фальшивые. Настоящих монет больше, чем фальшивых. Все настоящие монеты весят одинаково, а любая фальшивая монета отличается по весу от настоящей. Если вы сможете, используя чашечные весы без гирь, выделить хотя бы одну настоящую золотую монету, то она достанется вам.


           -0        

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

4.8. Три монеты, одна — фальшивая

Среди трех одинаковых по виду монет есть одна фальшивая — 60лее легкая, чем настоящие, имеющие одинаковый вес. Можно ли одним взвешиванием на чашечных весах без гирь выявить фальшивую монету?

4.9. 81 монета, одна — фальшивая

Среди 81 одинаковой по виду монеты есть одна фальшивая — 60лее легкая, чем настоящие, имеющие одинаковый вес. Как на чашечных весах без гирь за 4 взвешивания найти фальшивую монету?

4.10. 101 монета, одна — фальшивая

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

4.11. 51 монета, одна — фальшивая

Среди 51 монеты есть одна фальшивая. Не более чем за 25 взвешиваний на чашечных весах без гирь, не взвешивая никакую монету более одного раза, требуется найти эту монету. По виду все монеты одинаковы. Все настоящие монеты весят одинаково, и известно, что фальшивая монета легче настоящих.

4,12, Антиквар и 99 монет

Антиквар приобрел 99 одинаковых по виду старинных монет. Ему сообщили, что одна из монет — фальшивая и что она легче настоящих (все настоящие весят одинаково).

1.                    Как, используя чашечные весы без гирь, не более чем за 5 взвешиваний выявить фальшивую монету?

2.                    Как выявить фальшивую монету за 7 взвешиваний при условии, выдвинутом антикваром: не взвешивая никакую монету более двух раз?

4.13. 61 монета, две — фальшивые

Есть 61 монета одинакового внешнего вида. Известно, что две из них — фальшивые. Все настоящие монеты одинакового веса, а обе фальшивые — тоже одинакового веса, отличающегося от веса настоящих монет.

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

4.14. 103 монеты, две — фальшивые

Из 103 монет две — фальшивые (фальшивые монеты одинаковы по весу, все настоящие — тоже). За три взвешивания надо определить, тяжелее они настоящих или легче. (Определять сами эти фальшивые монеты не требуется.)

4.15. 10 монет: 5 золотых и 5 серебряных

Имеются 5 золотых и 5 серебряных монет одного веса. Фальшивомонетчик заменил одну золотую и одну серебряную монету фальшивыми, не отличающимися внешне от настоящих. Фальшивые монеты легче настоящих и имеют одинаковый вес. Как за три взвешивания на чашечных весах без гирь найти фальшивые монеты?

4.16. Шесть монет, две — фальшивые

Среди шести одинаковых по виду монет есть две фальшивые (они легче настоящих; все настоящие монеты весят одинаково). Как не более чем за три взвешивания на чашечных весах без гирь найти фальшивые монеты?

4.17, Странные весы

Имеются четыре монеты, три из которых — настоящие, весящие одинаково, а одна — фальшивая, отличающаяся от них по весу. Есть чашечные весы без гирь, такие, что если положить на их чашки одинаковые по весу грузы, то любая из чашек может перевесить (что странно), а если грузы различны по весу, то всегда перевешивает чашка с более тяжелым грузом (что естественно). Как за три взвешивания на таких весах выявить фальшивую монету и определить, легче она или тяжелее настоящих?

3—1523

4.18. 6 монет, 2 фальшивые, не очень точные весы

Перед вами лежат 6 одинаковых по виду монет, две из которых фальшивые (каждая из них тяжелее настоящей на 1 г). Есть также чашечные весы без гирь, правда, не очень чувствительные и реагирующие на разность веса не менее 2 г. Как за наименьшее количество взвешиваний выявить фальшивые монеты?

4.19.8 монет, 2 фальшивые

Имеются 8 монет, из которых две — фальшивые: одна легче настоящей, а другая — тяжелее. Можно ли за три взвешивания на чашечных весах без гирь установить, что тяжелее: две фальшивые монеты или две настоящие, или же они весят одинаково?

4.20. Разложить 22 монеты на две кучки

Известно, что в наборе из 22 одинаковых по виду монет есть две фальшивые монеты, которые отличаются от остальных по весу (настоящие монеты равны по весу друг другу; фальшивые монеты также равны по весу друг другу). Как разделить все монеты на две равные по весу кучки, сделав не более четырех взвешиваний на чашечных весах без гирь?

Решите также эту задачу для 32 монет, из которых две фальшивые.

4.21. Мешок с фальшивыми монетами

Имеются 10 мешков, набитых монетами. Известно, что все монеты в девяти мешках не фальшивые. Относительно оставшегося мешка известно, что в нем либо все монеты фальшивые, либо все настоящие. Фальшивая монета весит 11 г, а настоящая — 10 г. Как с помощью одного взвешивания на точных (до 1 г) весах выяснить, есть ли среди 10 мешков мешок с фальшивыми монетами, а если есть, то указать какой.

4.22, Еще один мешок с фальшивыми монетами

Имеются 11 мешков, набитых монетами. В десяти мешках монеты настоящие, а в еще одном — все монеты фальшивые. Все настоящие монеты одинаковы по весу. Все фальшивые монеты тоже одинаковы, но отличаются по весу от настоящих монет на d граммов (причем заранее не известно, легче они или тяжелее настоящих). Как с помощью двух взвешиваний на точных (до d граммов) весах определить, в каком мешке фальшивые монеты, и указать, легче они или тяжелее настоящих?

4.23. 12 мешков с золотыми монетами

Имеются 12 мешков с золотыми монетами. Все монеты во всех мешках имеют одинаковый размер и внешний вид. Известно, что в некоторых мешках все монеты фальшивые и что все фальшивые монеты легче настоящих.

Предложите способ определения мешков с фальшивыми монегами за минимальное количество взвешиваний на чашечных весах без гирь.

4,24, 101 монета, 50 фальшивых

Из 101 монеты 50 монет — фальшивые, которые на 1 грамм легче настоящих (все настоящие монеты имеют одинаковый вес). За одно взвешивание на чашечных весах, которые показывают разность весов на чашках, определите, является ли выбранная монета фальшивой.

4.25. Пять кучек по 5 монет

Имеются пять кучек по 5 одинаковых монет в каждой. В одной из кучек (неизвестно, какой) все монеты — фальшивые. Известен вес настоящих монет, а также то, что каждая фальшивая монета на 1 г тяжелее настоящей. В нашем распоряжении есть точные аптекарские весы с набором гирь, позволяющим определить любой необходимый вес. Как с помощью всего лишь одного взвешивания определить, в какой кучке находятся фальшивые монеты?

Можно ли решить эту задачу, если в каждой кучке будет 4 монеты? З монеты? 2 монеты?

4.26. Экспертиза фальшивых монет

На суде в качестве вещественного доказательства предъявлено 14 монет. Эксперт обнаружил, что семь из них фальшивые, а остальные — настоящие, причем узнал, какие именно монеты являются фальшивыми, а какие — настоящими. Суд же знает только, что все фальшивые монеты весят одинаково, все настоящие монеты тоже весят одинаково, а фальшивые монеты легче настоящих. Эксперт хочет тремя взвешиваниями на чашечных весах без гирь доказать суду, что все обнаруженные им фальшивые монеты действительно являются фальшивыми, а остальные — настоящими. Сможет ли он это сделать?

4.27. 201 монета, 50 фальшивых

Среди 201 монеты 50 фальшивых. Каждая фальшивая отличается от настоящей по весу на 1 грамм (тяжелее или легче). Имеются чашечные весы без гирь, но со стрелкой, показывающей разность масс грузов на чашках. За одно взвешивание для одной выбранной монеты нужно узнать, фальшивая она или настоящая. Как это сделать?

4,28, Случай в тюрьме для пиратов

Однажды начальник тюрьмы для пиратов (морских, а не компьютерных 9) обещал выпустить одного из заключенных на свободу, если он среди 25 внешне одинаковых монет, в числе которых есть три фальшивые, с помощью чашечных весов без гирь за два взвешивания найдет 6 настоящих монет. Все настоящие монеты имели одинаковый вес. Все фальшивые монеты также имели одинаковый вес, причем фальшивая монета была легче настоящей. Заключенный решил эту задачу и вышел на свободу. А сможете ли решить эту задачу вы?

4.29, Три пары монет

Имеются три пары монет: первая пара — золотые, вторая — серебряные, третья — бронзовые. В каждой паре одна монета настоящая, а другая — фальшивая. Все настоящие монеты — одинакового веса, все фальшивые — тоже одинакового веса. Известно, что фальшивые монеты легче настоящих.

Как на чашечных весах без гирь найти настоящие монеты за два взвешивания?

4.30, 20 металлических кубиков

Имеются 20 металлических кубиков, одинаковых по размеру и внешнему виду. Некоторые из них — алюминиевые, а остальные — дюралевые (более тяжелые). При помощи не более 11 взвешиваний на чашечных весах без гирь определите количество дюралевых кубиков.

Примечание. В задаче предполагается, что все кубики могут быть алюминиевыми, но дюралевыми все они быть не могут (иначе если бы все кубики оказались одного веса, то без этого условия мы никак не смогли бы определить, алюминиевые они или дюралевые).

4.31, Двенадцать монет

Среди 12 монет имеется одна фальшивая. Известно, что фальшивая монета отличается по весу от настоящих, но не известно, легче она или тяжелее. Настоящие монеты — все одного веса. Как с помощью трех взвешиваний на чашечных весах без гирь выделить фальшивую монету и одновременно установить, легче она или тяжелее остальных?

Палочки Непера

Палочки (бруски, пластины) Непера это простейшее счетное приспособление, с помощью которого можно быстро умножать многозначные числа на однозначные. Предложены Джоном Непером в 1617 г.

Идет урок литературы.

Учитель: «Кто может привести пример языка, на котором сегодня никто не говорит, но который является основой других языков?»

Один из учеников: «HTML».

Ученик опоздал в школу и говорит учителю: — Извините — я помогал бабушке перейти на следующий уровень!

Приходит программист к пианисту — посмотреть на новый рояль. Долго ходит вокруг, хмыкает, потом заявляет:

— Клавиатура неудобная: всего 84 клавиши, половина из них функциональные и ни одна не подписана. Хотя Shift нажимать ногой — это оригинально...


Маневры, переходы, переезды, ,

Здесь мы будем рассматривать различные маневры (не военные 9, а на железной дороге), переходы (по пустыне и через мост), и переезды (в лифте).

5.1. Формирование состава

Рядом с основным участком АВ железной дороги имеются два запасных пути (рис. 5.1). Тепловоз Т и три вагона размещены так, как показано на рисунке. Необходимо сформировать состав, который поедет по основному пути направо, так, чтобы порядок следования сцепленных с тепловозом вагонов соответствовал их номерам (начиная от тепловоза). Тепловоз работает без машиниста в автоматическом режиме. Так же работают и стрелки С1 и С2, переводящие рельсы на одно из трех направлений движения. Первоначально обе стрелки установлены на движение по основному участку.

Справа от стрелки С2 находится точка С на таком расстоянии от С2, что между С и С2 умещаются тепловоз и два вагона.

ст

Для управления перемещением тепловоза и работой стрелок могут быть использованы следующие команды:

1)  двигаться вперед до сцепки с вагоном № 1

2)  двигаться вперед до сцепки с вагоном № 2;

З) двигаться вперед до сцепки с вагоном № З;

4)            двигаться назад до сцепки с вагоном 1;

5)            двигаться назад до сцепки с вагоном № 2;

6)            двигаться назад до сцепки с вагоном N2 З;

7)            двигаться вперед до стрелки С 1;

8)            двигаться вперед до стрелки С2;

9)            двигаться назад до стрелки С1;

10)        двигаться назад до стрелки С2;

11)        двигаться вперед до точки С

12)        двигаться назад до точки А

13)        отцепить прицепленный к тепловозу вагон;

14)        перевести стрелку С1 на основной путь;

15)        перевести стрелку С1 на верхний ( «северный » ) запасной путь;

16)        перевести стрелку С1 на нижний («южный») запасной путь;

17)        перевести стрелку С2 на основной путь;

18)        перевести стрелку С2 на «северный» запасной путь; 19) перевести стрелку С2 на «южный» запасной путь.

Какой должна быть программа для решения этой задачи?

Сцепка тепловоза с вагоном и вагонов между собой происходит автоматически .

О точке С см. выше.

Место расположения точки А на железнодорожном пути соответствует показанному на рис. 5.1.

72

5.2. Перестановка вагонов

На основном участке железной дороги находится тепловоз Т, а на запасном пути — два вагона: белый и черный (рис. 5.2). Машинисту тепловоза надо поменять местами эти вагоны и оказаться на первоначальном месте. Проблема заключается в том, что на запасном пути есть старый мост М, по которому тепловоз проходить не может. Мост небольшой — на нем может находиться только один вагон. Может ли машинист решить стоящую перед ним задачу?

Рис. 5.2

5,3. И опять формирование состава

На основном участке железной дороги и на запасном пути находятся тепловоз Т и три вагона (рис. 5.3). Машинисту тепловоза необходимо сформировать состав, который поедет по основному пути направо, так, чтобы порядок следования сцепленных с тепловозом вагонов соответствовал их номерам (начиная от тепловоза). Мост М на запасном пути — такой же, как и в задаче 5.2. Может ли машинист решить стоящую перед ним задачу?

5. Маневры, переходы, переезды...                                                                 73

5.4. Перестановка вагона и цистерны

На рис. 5.4 изображен кольцевой участок железной дороги с мостом М и тупиком А. На этом участке находится тепловоз Т, товарный вагон В и вагон-цистерна Ц. Через мост может проехать только тепловоз (без вагонов). Вагоны могут перемещаться, только когда они сцеплены с тепловозом (с двух его сторон или друг с другом). В тупике умещается только один из вагонов. Как должен маневрировать тепловоз, чтобы поменять местами товарный вагон и вагон-цистерну и оказаться на первоначальном месте?

Рис. 5.4

5.5. Ночной переход по мосту

Ночью к мосту подошла семья (папа, мама, малыш и бабушка). Папа может перейти мост за 1 минуту, мама — за 2, малыш за 5, бабушка — за 10 минут. Мост выдерживает только двоих. Какое минимальное время потребуется этой семье для перехода через мост? (Есть один фонарик. Двигаться по мосту без фонарика нельзя. Светить издали нельзя. Нести друг друга на руках нельзя. Бросать фонарик друг другу нельзя. Если мост переходят двое, то они идут с меньшей из их скоростей.)

5.6. Переход по пустыне

Сколько носильщиков должен нанять путешественник, чтобы осуществить шестидневный переход из пункта А в пункт Б по пустыне, если и он сам, и каждый из носильщиков могут нести запас пищи и еды на 4 дня на одного человека? Каким должен быть алгоритм действий каждого участника этого перехода?

5.7. Задача о лифте

В кабине лифта 20-этажного дома есть две кнопки, При нажатии на одну из них лифт поднимается на 13 этажей, при нажатии на другую — опускается на 8 этажей. Как попасть с 13-го этажа на 8-й?

Машина Шиккарда   первая вычислительная машина

До середины ХХ в. считалось, что первую вычислительную машину изобрел в 1642 г. Блез Паскаль. Но в 1958 г. были обнаружены письма Вильгельма Шиккарда (профессора восточных языков в Тюбингенском университете) к известному астроному Иоганну Кеплеру, относящиеся к 1623 и 1624 гг., в которых приведено описание схемы и принципа работы изобретенной Шиккардом машины.

В доме-музее Кеплера, на его родине в городе Вайле (Германия), по схемам Шиккарда была изготовлена и успешно эксплуатируется модель этой машины.

Папа-программист рассказывает сыну сказку:

«...И дважды кликнул он свою верную мышь».

6 Пляшущие человечки и лысина раба

помните рассказанную удивительную знаменитым историю сыщиком с пляшущими Шерлоком человечками,Холмсом

своему другу доктору Ватсону? Пересказывать ее я не буду, а только приведу странные записки (рис. 6,1), которые преступник посылал своей жертве, а потом напомню конец рассказа.

Рис. 6.1

Такие пляшущие человечки могут показаться смешными — детские рисунки, глупая забава. А вот Шерлок Холмс, хорошо знакомый с различными видами тайнописи и даже написавший

 

76

небольшую статью по этому вопросу, сразу определил, что перед ним шифр. Он понял: фигурки означают буквы,— и начал искать ключ.

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

Вообще же существует много различных систем шифрования. К ним прибегают в военном деле, на дипломатической службе и в других случаях, когда нужно сохранить в тайне содержание переписки. Шифрование текста используется человечеством с того самого момента, когда появилась первая секретная информация — такая, которая должна быть недоступна тем, кому она не предназначена.

6.1. Шифр Цезаря

Один из самых первых известных методов шифрования носит имя римского императора Юлия Цезаря (1 в. до н. э.), который если и не изобрел его сам, то активно им пользовался. Этот метод основан на замене каждой буквы шифруемого текста на другую путем смещения в алфавите от исходной буквы на фиксированное количество символов; причем алфавит читается по кругу, т. е. после буквы «я» снова идет буква «а» . Регистр символов при этом не учитывается. Например, слово «БАЙТ» при смещении на два символа вправо кодируется словом «ГВЛФ» .

1.                Расшифруйте слово «НУЛТХСЁУГЧЛВ», закодированное с помощью шифра Цезаря, если известно, что каждая буква исходного текста заменяется третьей после нее буквой.

2.                Расшифруйте четверостишие Омара Хайяма:

РЛЗЬ ЁМЭйз АВБЖУ ИЙЗАВЛУ, БЖЩЛУ ЖЩЭЗЬЖЗ

ЭКЮЁЩЕЗ,

ЭЫЩ ЫЩАЖФО ИЙЩЫВЕЩ БЩИЗЁЖВ ЭЕШ

ЭКЩРЩЕЩ:

ЛФ ЕМРСЮ ЪЗЕЗЭЩГ, рюЁ рлз ИЗИЩЕЗ ЮКЛУ

В ЕМРСЮ ьмэу ЗЭВЖ, рюЁ ЫЁЮКЛЮ К дюЁ ИЗИЩЕЗ.

Конкретный вариант шифрования методом Цезаря при этом неизвестен .


77

6.2. Буратино и шифровка

Буратино обнаружил начальную строку зашифрованного послания, написанного неизвестным ему шифром:

ШЫР-ПИР Ю ПАПУЖГЫ ЗЭЛЭМЪЫЙ ГЁСРЫГ...

Помогите Буратино расшифровать послание.

6.3, Машина для расшифровки из бумаги

Для шифра Цезаря существует простой способ расшифровки текста, даже если направление и величина сдвига букв в алфавите неизвестны, — это так называемый «метод полосок».

Берутся несколько полосок из бумаги, картона и т. п. и на каждую из них наносятся по порядку буквы алфавита (буквы «е» и «ё» не различаются — рис. 6.2). В криптограмме (тексте, представляющем собой зашифрованное сообщение) берется некоторое слово (например, «ОНКДЖДМ»). Полоски прикладываются друг к другу так, чтобы образовать данное слово (рис. 6.2). Теперь, двигаясь вдоль полосок, можно найти среди строк единственное осмысленное сочетание «ПОЛЕЗЕН» , которое является расшифровкой данного слова. Одновременно определяется и величина сдвига.

и й к л м

н

 

ж

з и й к л м

 

д Е з

и

 

Э

я

в

 

я

А Б

д

 

э

ю

я

А Б в

 

ж

з и й

л

 

 

 

 

 

 

 

 

 

 

 

 

 

Р

с

Х ц

 

о п Р с т

Ф х

 

л м н о п с

т

 

Е

ж з

и й к л

М

 

з и й

л м

н о

 

Е

ж

з

й

м

 

н о п

с

ф

Рис. 6.2

В качестве упражнения предлагаю читателю расшифровать методом полосок следующую криптограмму, зашифрованную методом Цезаря:

ЕИФИРРЛМ ФЕИХОЮМ ЗИРЯ НОСРОФВ Н ЕИЫИУЦ РСКСЕЮИ ХЦЫНЛ ФХСВОЛ ЕЮФСНС Е ВФОСП РИДИ Л НГКГССЯ РИ ТОЮОЛ ПЛПС Г ЦШСЗЛОЛ Е ФГПЦБ ЖОЦДЯ ОГКЦУЛ.

Чтобы полнее оценить преимущества описанной «машины», попробуйте с ее помощью расшифровать также и приведенное в задаче 6.1 четверостишие Омара Хайяма.

6.4. «Тарабарская грамота»

Найдите ключ к «тарабарской грамоте» — тайнописи, применявшейся ранее в России для дипломатической переписки:

Пайцике тсюг т «ммащаллтой отроке» КЏЙПОНИЛИ, нлирепяшвейля ш Молиш цся цинсоракџгелтой Не-меНИЛТИ

Ключом в данном случае называются правила, по которым шифруется исходный текст.

6.5. Карл пишет Кларе

Клара получила от Карла письмо по электронной почте. Однако из-за неправильной настройки компьютера то ли у Карла, то ли у Клары текст письма выглядел так (рис. 6.3):

ФО О е ПЛ

Рис. 6.3

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

6.6. Номера вместо букв

Если в некотором слове заменить буквы на номера этих букв в ал-

6.7. Однажды в поезде

Когда-то давно, когда еще существовала страна под названием «СССР», автор этих строк ехал в поезде и с удивлением обнаружил, что если в названиях пунктов отправления и назначения поезда заменить буквы их номерами в алфавите, то они (названия) записываются с помощью всего лишь двух цифр: 211221 и 21221. Откуда и куда ехал автор?

6.8. Расшифровка текста

В рассмотренных ранее задачах шифрование текста было основано на принципе замены, когда буквы одного языка заменяются буквами другого языка, цифрами или какими-то символами. Но это, как нетрудно видеть, решая предыдущие задачи, — не самый надежный способ: при известном навыке можно очень легко дойти до истинного смысла зашифрованного текста, даже не зная того, что называется таблицей коДировки, — в том числе для достаточно сложного шифра.

Пусть, например, в ваши руки попала криптограмма, написанная по принципу замены букв числами (одинаковые буквы заменены одинаковыми числами) — рис. 6,4.

1, 2, 3 - 2, 3 - 4, 5, 6, 7, 4, 8 - 2, з, 7 - 9, 10, 2, 8

11, 4, 12, 13, 14-1, 15, 16, 17-6-4, 9, 2 - 13, 9, 17, 14, 18, 2, 19, 20

21, 9, 13-18, 16, 4, 9, 11 - 22, 6, 23, 24-9, 13, 2, 9, 25, 11, 14, 18, 2, 19, 20

15, 16, 25, 13, 16, з, 7, 4, 8 - 26, 22, 6, 25 - 1, з, 2, 8

Рис. 6.4

Слова в ней отделены друг от друга при помощи тире («—») а буквы — запятыми. Известно, что в самом зашифрованном тексте тире нет и что буквы «е» и «ё» закодированы одним и тем же числом. Расшифруйте эту криптограмму это можно сделать путем рассуждений.

6.9. Частотный анализ

Восстановить буквы текста, зашифрованного путем замены, с большой уверенностью можно, анализируя частоту появления тех или иных букв и их сочетаний. Этот метод (он так и называется — частотный анализ) основывается на том, что известно, как часто встречается та или иная буква в русском языке (или в английском именно это учитывал герой рассказа Эдгара По «Золотой жук » , расшифровывая найденный пергамент). А затем,

даже если в каких-то частях текста возникает неоднозначность, она легко устраняется по смыслу.

Относительные частоты букв русского языка указаны в табл. 6,1.

Таблица 6.1

 

Буква

Относительная частота

 

Буква

Относительная частота

 

Буква

Относительная частота

о

а

0,062

10

 

0,028

20

ф

0,002

1

б

0,014

11

л

0,035

21

х

0,009

2

в

0,038

12

м

0,026

22

ц

0,004

з

 

0,013

13

н

0,053

23

 

0,012

4

д

0,025

14

О

0,090

24

ш

0,006

5

 

0,072

15

п

0,023

25

щ

0,003

6

ж

0,007

16

Р

0,040

26

ы

0,016

7

з

0,016

17

с

О , О 45

27

 

14

8

и

0,062

18

 

0,053

28

Э

0,003

9

и

0,010

 

 

0,021

29

ю

0,006

 

 

 

 

 

 

зо

я

0,018

Буквы «е» и «ё» , а также «ь» и «ъ» обычно кодируются одинаково, поэтому в табл. 6.1 они тоже не различаются. Как видно из таблицы, наиболее часто используемая буква русского языка — «о». Ее относительная частота, равная 0,090, означает, что на 1000 букв русского текста приходится в среднем 90 букв «о».

В аналогичном смысле понимаются относительные частоты и остальных букв. В табл. 6.1 не указан еще один символ — пробел (промежуток между словами). Его относительная частота наибольшая и равна 0,175.

С помощью табл. 6.1 расшифруйте криптограмму:

Цярснсмщи ямякзж онкДжДм мд СНКЫЙН гкю онгрсямнбнцмщф йпзоснвпялл мн б гптвзф рктцяюф нм ркнемДД

6.10. Что такое «лягяня»?

Расшифруйте следующий текст:

тяДзгыщхоэь пэжо ч йчтэяшаь гэнэшюэь епяу дызысю, бэхыэь пыъ бэ лягяня чтгыщюпмчо ю ч ячпыхмшаью ДЫЗЫСЫЬЮ, Ыщпяга

Известно, что он зашифрован следующим образом. Гласные буквы («а», «о», «у», «ы», «я», «е», «ю», «и», «э», «й») каким-то способом разбиты на пары. Согласные буквы («б», «в», «г», «д»,

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

6.11. Шифр Вижинера

Шифр Вижинера представляет собой разновидность шифра Цезаря с переменной величиной сдвига, которая задается некоторым ключевым словом. Например, ключевое слово «ВАЗА» означает следующую последовательность сдвигов букв исходного текста: З, 1, 9, 1, З, 1, 9, 1 и т. д.

Используя ключевое слово «ВАГОН», зашифруйте слова: «АЛГОРИТМ», «ПРАВИЛА» и «ИНФОРМАЦИЯ».

6.12. Послание будущим издателям

В одной книге, которая переводилась с английского языка, при переводе были сделаны ошибки. Редактору, который готовит новое издание книги, читатели послали следующую шифровку:

ИВСЬПТРЕА СРТЫАЕ ОБШКИИ И ОАПТЕКЧИ И НЕ ДЙЕТЛЕА НЬЮХВ!

Расшифруйте ее.

6.13. Перестановочный шифр

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

Мы рассмотрим один тип перестановочной криптограммы, которая составляется при помощи ключевого слова. Буквы тек-

Буква «й» условно причислена к гласным, а буквы «ь», «ъ» — к согласным.

ста, который должен быть передан в зашифрованном виде, первоначально записываются в клетки прямоугольной таблицы по ее строкам. Буквы же ключевого слова пишутся над ее столбцами и указывают порядок (нумерацию) этих столбцов способом, объясняемым чуть ниже. Чтобы получить теперь закодированный текст, надо выписывать буквы по столбцам с учетом их нумерации.

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

Таблица 6.2

 

з

а

 

и

с

 

2

1

4

з

5

6

в

с

в

я

з

и

с

с

О

 

д

а

в

 

и

м

с

я

п

О

л

о

 

 

н

и

 

м

О

т

О

д

в

и

 

а

 

м

с

Р

О

к

и

в

О

з

в

 

а

щ

 

н

и

я

д

 

м

о

и

 

а

м

з

а

й

 

Выписывая буквы из столбцов этой таблицы в порядке, соответствующем числам во второй строке (т. е. сначала из второго столбца, затем из первого и т. д.), получим такую шифровку:

ссшоиДмвщомвсвпноеиаДаязмомирзно авоилевсоемззДсжоговийииаяетакряр

Ключевое слово известно, конечно, и адресату, который поэтому без труда расшифрует это сообщение. Но для тех, кто этим

ключом не владеет, восстановление исходного текста весьма проблематично (хотя в принципе возможно). Частотный анализ здесь

Рамзай — псевдоним советского разведчика Рихарда Зорге.

83

по вполне понятным причинам не решает задачи. В лучшем случае, поскольку частоты букв будут примерно такие, как в табл. 6.1, он позволит предположить, что было применено перестановочное кодирование.

Использование ключевого слова здесь, конечно же, не обязательно, — можно было бы просто указать нумерацию столбцов цифровым ключом (в данном случае — числом 214356). Однако слово удобнее, если ключ надо хранить в памяти (что немаловажно для конспирации).

Задачи

1.Подумайте, нужно ли получателю шифровки кроме ключевого слова знать количество строк в кодовой таблице, чтобы разбить шифрограмму на части, соответствующие столбцам этой табЛИЦЫ.

2.Расшифруйте следующий текст, используя ключевое слово «модель»:

метДллеснььсеенуютоизслшмечснояояч жфрпткгщоаменруоероелтоите-аеобпви

З. Используя ключевое слово «пакет», зашифруйте текст (знаки препинания при этом не учитываются):

Подлинность Документов, полученных через агента

Байтик, поДтвержДаю. Юстас

6.14. Шифрование двумя цифрами

Шифр можно еще более усложнить, если дополнительно к описанному выше каждую букву заменять не одним, а двумя или несколькими символами (буквами или числами). Например, расположим буквы русского алфавита в квадратной таблице 6 х 6 произвольным образом, скажем, как в табл. 6.3.

Таблица 6.3

 

 

 

 

 

 

 

 

 

з

и

 

 

с

 

 

 

 

 

 

 

 

 

 

 

 

 

л

 

 

 

я

 

 

 

 

 

 

 

 

 

 

5

эк

ш

щ

тт

 

 

Своей, а не компьютера О.

Каждую букву будем шифровать парой цифр: первая цифра — номер строки, в которой стоит данная буква, а вторая — номер столбца. Например, букве «б» соответствует обозначение «21», а слову «шифр» — обозначение «51022304».

Задачи

1. Расшифруйте следующий текст, зашифрованный с использованием табл. 6.3:

22051104454010534504454142050211053241

104145425 З 0445444525454141 О З 1 З 5044224

2. Используя табл. 6.3, зашифруйте текст (знаки препинания при этом пропускаются): «Срочно приезжай. Ангел».

6.15. Шифр Тритемиуса

Еще большие трудности для криптоанализа (расшифровки) представляет шифр, связываемый с именем Тритемиуса — ученого аббата из Вюрцбурга, которого к занятиям криптографией побуждало, быть может, не только монастырское уединение, но и потребность сохранять от огласки некоторые духовные тайны. Этот шифр тоже является развитием описанного ранее шифра Цезаря и состоит в следующем. Буквы алфавита нумеруются по порядку числами О, 1 30 (см. табл. 6.1). При шифровании некоторое ключевое слово (или номера его букв) подписывается под сообщением с повторениями, как показано ниже:

В

с

в

я

з

и

с

с

о

з

д

а

в

ш

и

м

с

я

П

о

л

о

з

а

п

и

С

ь

з

а

п

и

С

ь

з

а

п

И

С

Ь

з

а

п

и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

е

н

И

е

м

о

т

о

д

в

 

г

 

е

м

с

 

о

к

и

в

с

ь

з

а

п

и

С

Ь

з

а

п

и

с

ь

з

а

п

и

с

ь

з

а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

з

в

 

а

 

е

н

и

я

д

о

м

о

й

 

а

м

з

а

й

 

п

и

с

ь

з

а

п

и

с

ь

з

а

п

и

С

Ь

з

а

п

и

с

 

Далее каждая буква сообщения «сдвигается» вдоль алфавита по следующему правилу: буква с номером т (согласно нумерации в табл. 6.1), под которой стоит буква ключевого слова с номером К, заменяется на букву с номером I = т + К (если т + К < 31) или на букву с номером I = т + К — 31 (если т + К > 31). Например, первая буква «в» сдвигается на 7 позиций и заменяется буквой «и»; следующая буква «с» остается без изменения и т. д. Таким образом, номер кодирующей буквы вычисляется по формуле:

I = (т + К) mod 31,

где mod — операция определения остатка от деления.

В цифровых обозначениях исходное сообщение и повторяемое

ключевое слово могут быть записаны в следующем виде (табл. 6,4).

Таблица 6.4

Сообщение

2

17

2

 

7

8

17

17

14

7

4

о

2

Ключ

7

О

15

8

17

 

7

о

15

8

17

 

7

Сообщение

24

8

12

17

30

15

14

11

14

6

5

13

8

Ключ

о

15

8

17

 

7

о

15

8

17

27

7

 

Сообщение

5

12

14

18

14

4

2

8

з

о

5

12

17

Ключ

15

8

17

27

7

О

15

8

17

27

7

о

15

Сообщение

16

14

10

8

2

14

7

2

16

о

25

5

13

Ключ

8

17

 

7

о

15

8

17

 

7

о

15

8

Сообщение

8

 

4

14

 

14

9

16

о

12

7

 

9

Ключ

17

 

7

О

15

8

17

 

7

о

15

8

17

После суммирования верхней и нижней строк по модулю 31 мы получим последовательность чисел:


9, 17, 17, 7, 24, 4, 24, 17, 29, 15, 21, 27, 9, 24, 23, 20, з, 26, 22, 14, 26, 22, 23, 1, 20, 8, 20, 20, о, 14, 21, 4, 17, 16, 20, 27, 12, 12, 1, 24, о, 6, 15, 2, 29, 15, 19, 12, 7, 25, 20, 21, 25, 26, 11, 14, 27, 22, 26, 12, 7, 12, 22, 8, 26.

Наконец, заменяя эти числа на буквы, получим закодированный текст:

йссзшДшсюпхьйшчфгыцоыцчбфиффаохДсрфьммбшаж пвюпумзщфхщылоьцымзмциы

Если ключевое слово известно, то дешифровка такого текста производится без всякого труда на основе равенства:

т = (l — К) mod 31.

Расшифровать же подобный текст, если ключ неизвестен, чрезвычайно трудно, хотя в истории криптографии были случаи, когда такие тексты удавалось «разгадать» .

Задачи

1.                       Расшифруйте текст, зашифрованный шифром Тритемиуса, если ключевое слово — «Бейсик»:

5, 19, 19, 5, 20, 15, 14, 23, 4, 31, 22, 21, 20, 28, 17, 28, 23, 26, 15, 25, 14, 33, 25, 24, 17

2.                       Используя ключевое слово «байт», зашифруйте шифром Тритемиуса текст (знаки препинания при этом не учитываются): Срочно приезжай. Ангел

6.16. Три письма

Разведчик направил своему агенту три письма. В первом письме был листочек с квадратной таблицей (рис. 6.5), а в третьем листочек с другой таблицей (рис. 6.6). Второе письмо, содержавшее пояснения по использованию этих двух таблиц, потерялось. Помогите агенту прочитать послание шефа.

                                  Рис. 6.5                                                                            Рис. 6.6

6.17. Шифрование текста с помощью таблиц

Если вас заинтересовал способ шифрования текста, использованный в предыдущей задаче, то давайте обсудим вопрос о том, как изготовить вспомогательную таблицу, в частности как сделать, чтобы при поворотах окошечко не попадало повторно на уже прочитанную клетку, а все клетки зашифрованного сообщения были

просмотрены.

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

        Тарабарская грамота       несложный шифр

В ней 31 буква. 31 =5,6. Значит, т = 6, т. е. наша таблица будет содержать 6 строк и 6 столбцов.

Разделим эту квадратную таблицу на четыре равных квадрата и обозначим их как А, В, С, D (рис. 6.7).

А

В

С

D

Рис. 6.7

При этом каждый из квадратов содержит т/2 строк. Заполним квадрат А последовательно числами от 1 до (т/2)2 . Для т = 6 получим таблицу,показанную на рис. 6.8.

1

 

 

4

5

 

7

 

 

Рис, 6.8

При повороте квадрата А на 90 0 по часовой стрелке мы получим квадрат В, при этом числа квадрата А тоже будут «повернуты» (рис. 6.9).

7

4

1

8

5

 

9

6

З

Рис. 6.9

Точно так же заполним числами квадраты С (поворот квадрата А на 90 0 против часовой стрелки) и D (поворот квадрата А на 180 0 ). Тогда таблица примет вид, показанный на рис. 6.10.

1

2

 

7

4

1

4

5

6

8

5

2

7

8

9

9

6

з

З

6

9

9

8

7

2

5

8

6

5

4

1

4

7

з

2

1

Рис, 6.10

Теперь остается вырезать в ней 9 «окошек» (всего клеток в таблице 6 х 6 = 36, поворотов — 4, значит, окошек должно быть 36/4 = 9). Для этого выделяем по одному числу от 1 до 9 в любом квадрате (например, такие, как на рис. 6.11). Тогда окончательный вид вспомогательной таблицы-трафарета будет таким, как показано на рис. 6.12 (ячейки, закрашенные серым цветом, нужно вырезать).

 

1

2

 

7

 

1

4

5

6

8

5

 

7

8

9

9

6

з

З

6

9

9

8

7

2

5

8

6

5

4

1

1

4

7

з

2

                    Рис. 6.11                                                               Рис. 6.12

Чтобы зашифровать текст, будем вписывать в окошки построчно исходный текст (без пробелов; допустимая длина текста до 36 букв), поворачивая вспомогательную таблицу по мере заполнения ее ячеек. Так как букв в нашем тексте всего 31, а клеток 1— 36, то 5 оставшихся клеток заполним последовательными буквами алфавита: «а», «б», «в», «г», «д» (рис. 6.13).

н

Ш

т

и

а

ф

 

 

 

я

 

 

л

а

 

о

а

Р

 

 

 

в

ж

а

 

 

 

 

 

 

о

ы

т

 

 

 

Рис. 6.13

Для расшифровки получателю послания необходимо будет воспользоваться точно такой же вспомогательной таблицей: четырежды повернуть ее и прочитать текст.

Вариантов вспомогательных таблиц размера 6 х 6 может быть очень много. В нашем примере окно под номером 1 мы взяли из квадрата С, хотя возможных вариантов выбора номера 1 возможно 4 (из квадратов А, В, С или D). Точно так же число 2 можно взять не из квадрата В, а из любого из четырех квадратов. Значит, существует 4 х 4 = 4 2 = 16 способов выбрать два окна. Рассуждая аналогично, можно прийти к выводу, что существует 49 = 262 144 различных комбинаций для таблицы размера 6 х 6. Так что вероятность подобрать таблицу для расшифровки крайне мала.

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

89

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

   строка 1: 0010102 = 10102 = 1010;

   строка 2: 0000012 = 12 = 110;

   строка З: 0100002 = 100002 = 1610;

   строка 4: 0010012 = 10012 = 91 о;

   строка 5: 0101002 = 101002 = 2010;

   строка 6: 000001         12 = 110.

Теперь достаточно будет передать вместе с зашифрованным сообщением полученные числа (в нашем случае это 10, 1, 16, 9, 20, 1; количество таких чисел определяется размером матрицы). После перевода этих десятичных чисел в двоичные таблица определяется однозначно.

Задачи

1.                Расшифруйте сообщение:

АЬИЛПППТИООСОЗСДЬЬПРМГОВРААРМО ВМЛУРЯЕЮОТЧИЕТТДААПКРЦТБАЬЕВУ

КИ ДРЮ 2, 69,16, 66, 149, 32, 4, 164

2.                Зашифруйте рассмотренным методом текст (пробелы при этом не учитываются):

ВСЕ ИДЕТ ПО ПЛАНУ

Для проверки правильности решения этой задачи выполните обратную расшифровку полученного текста.

6.18. Игра в прятки, или Что такое стеганография

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

никем прочитан. Этот текст можно записать в зашифрованном виде, используя, например, шифр Цезаря. После шифрования текст будет иметь вид «КВУ ЫФ ЛГНЕОЛК... » . Но если файл попадет в руки посторонних, то сразу станет ясно, что текст зашифрован, и возникнет вопрос: «А что это вы там скрываете?» 9. Стеганография же позволяет сделать так, чтобы невозможно было даже заподозрить существование тайного послания — посторонний увидит, например, фотографию известного футболиста Андрея Аршавина, не подозревая о том, что в нее встроен секретный текст.

Слово «стеганография» в переводе с греческого буквально и означает то, о чем шла речь выше, — «тайнопись» (steganos — «секрет», «тайна» ; grapho — «запись»). К этой области относится огромное множество секретных средств связи, таких, как невидимые чернила, микрофотоснимки, условное расположение знаков

История стеганографии — это сама история развития человечества. Местом зарождения стеганографии многие считают Египет, хотя можно предположить, что еще в каменном веке, задолго до появления первых шифров, люди могли договориться и особым образом поворачивать булыжник у входа в пещеру, тем самым подавая тайные условные знаки своим соплеменникам

Первое упоминание о стеганографических методах в литературе приписывается историку Геродоту. Как вам, наверное, известно из уроков истории, в Древней Греции послания писали остро заточенными палочками на дощечках, покрытых воском. Так вот, у Геродота описано, как Демерату необходимо было послать в Спарту сообщение об угрозе нападения. Он соскоблил воск с дощечки и, написав послание на дереве, затем снова покрыл дощечку воском. Конечно же, эта дощечка успешно прошла досмотр римских центурионов ведь она выглядела абсолютно чистой! Другой эпизод, который относят к тем же временам, передача послания с использованием раба. Для передачи тайного сообщения рабу наголо брили голову, писали на коже требуемое послание, а когда волосы вновь отрастали, отправляли раба с этим «посланием» к адресату. Тот опять брил рабу голову,

и... сообщение доставлено!

Пожалуйста, не путайте это понятие со словом «стенография». Стенография — это система средств (знаков) и правил (приемов) быстрой записи устной речи. Быстрота записи здесь достигается за счет замены букв обычного письма (главным образом, согласных) специальными «буквами стенографии», которые выглядят проще (плавные кривые, без прямых и полных закруглений), а также за счет множества сокращений. Стенография ускоряет запись по сравнению с обычным письмом в 3—4 раза, до 50—60 слов в минуту.

Здесь можно также вспомнить эпизод с цветком в окне из телевизионного фильма «Семнадцать мгновений весны».

«Темное средневековье» породило не только инквизицию: усиление слежки привело к развитию как криптографии, так и стеганографии. Именно в средние века впервые было применено совместное использование шифров и стеганографических методов.

В XV в. аббат Тритемиус (см. задачу 6.15) описал много различных методов скрытой передачи сообщений. Позже, в 1499 г., эти записи были объединены в книгу «Steganographia» .

XVII—XVIII вв. известны как «эра черных кабинетов» — специальных государственных органов по перехвату, перлюстрации (просмотру) и дешифровке переписки. В штат таких «черных кабинетов», кроме криптографов и дешифровальщиков, входили и другие специалисты, в том числе химики. Наличие специалистовхимиков было необходимо из-за активного использования так называемых «невидимых чернил». Примером может служить любопытный исторический эпизод: восставшими дворянами в Бордо был арестован францисканский монах Берто, являвшийся агентом кардинала Мазарини. Восставшие разрешили Берто написать письмо знакомому священнику в город Блэй. Однако в конце этого письма религиозного содержания монах сделал приписку, на которую никто не обратил внимание: «Посылаю Вам глазную мазь; натрите ею глаза, и Вы будете лучше видеть» . Так он сумел переслать не только скрытое сообщение, но и указал способ его обнаружения. В результате монах Берто был спасен.

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

Различные « симпатические» («невидимые») чернила использовали и русские революционеры в начале ХХ в., что нашло отражение в литературе: А. Куканов в своей повести «У истоков грядущего» описывает применение молока в качестве чернил для написания тайных сообщений (рис. 6.14). Впрочем, царская охранка тоже Рис. 6.14 знала об этом методе (в архиве хранится документ, в котором описан способ использования таких «симпатических» чернил и текст перехваченного тайного сообщения).

Особое место в истории стеганографии занимают фотографические микроточки. Во время Второй мировой войны они сводили

с ума спецслужбы США. Однако микроточки появились намного раньше, сразу после изобретения Дагером фотографического процесса, и впервые были использованы в военном деле еще во времена франко-прусской войны (в 1870 г.).

Ну, а в наше время с самыми разными стеганографическими методами очень хорошо знакомы школьники, студенты и их учителя, — ну конечно же, это вездесущие шпаргалки! ©

Если теперь основные идеи стеганографии стали вам понятны, то перейдем к стеганографии компьютерной — криптографическому методу, связанному с размещением зашифрованного текста в различных компьютерных объектах.

Где же в компьютере находится тот самый «стог сена» , в котором можно спрятать иголку? Есть такие места, и не одно!

Для начала придется немного углубиться в принципы работы файловых систем. Для удобства адресации каждый файл всегда занимает целое количество секторов. Из-за этого, например, файл размером в 1 байт может занимать на диске несколько килобайт. Несложно догадаться, что на самом деле при этом занят лишь 1 байт, а остальное пространство не используется. Именно туда можно вписать нужную нам информацию. Также можно записать данные на неиспользуемые области накопителей (например, в нулевую дорожку). Однако большой объем информации, к сожалению, так спрятать не удастся.

На дисках компьютера существуют и другие места для скрытия данных. Исполняемые файлы (типа * . ехе и * . сот) в операционной системе Windows представлены в формате РЕ (Portable Executable). Этот формат подразумевает наличие в файлах не только исполняемого кода программы, но и другой информации. Поскольку некоторые данные не занимают всего выделенного под них пространства, в образовавшихся «пустотах» исполняемого файла можно размещать свои данные. (Кстати, эту особенность используют некоторые вирусы — их называют файловыми.)

Далее, почти все мультимедийные форматы имеют поля расширения. Если в них не записана какая-либо нужная служебная информация, то они могут быть использованы для записи «секретов» , Но и этот способ не дает возможность сохранить значительный объем информации.

И все же, хотя контейнерами могут быть различные файлы, чаще всего в этой роли выступают именно звуковые файлы или графика. Кроме того, что их легко пересылать, не вызывая подозрений, у звука и картинок есть уникальная особенность — они

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

93

позволяют прятать в себя информацию, совершенно не увеличиваясь в размерах и почти не меняясь внешне. Например, с помощью простейшей утилиты можно вставить 10 килобайт текста в 100-килобайтную картинку так, что на глаз она будет неотличима от прежней, а ее размер не изменится ни на один бит (рис. 6.15).

                         Отправитель                                      Получатель

       Контейнер                                                                                  Контейнер

Рис. 6.15

Дадим объяснение этому «фокусу» , поскольку его используют примерно девять стеганографических программ из десяти. Представим себе простейшую черно-белую картинку, в которой каждый пиксель описывается одним байтом. Этот байт кодирует цвет пикселя: нуль — черный, 255 — белый, а все остальное — градации серого. Если мы изменим любой байт нашего файла (или, что то же самое, отдельные биты этого байта), то соответствующий ему пиксель изменит цвет. Но при этом оказывается, что изменение разных битов влияет на цвет пикселя по-разному: изменение первого слева — очень сильно, второго — слабее, а изменение последнего, восьмого, бита может добавить к байту (а значит, и к пикселю) только единицу (или отнять ее). Заметит ли нормальный человек изменение оттенка серой точки на всего одну градацию (на 1/256) серого? Конечно, нет! А значит, для нашей картинки практически не важно, каковы последние биты ее байтов. И что бы мы с ними ни делали — обнуляли, переставляли, заменяли на случайные, картинка будет казаться одинаковой. Также не будет меняться и размер картинки — ведь количество байтов в ней мы не меняем. Поэтому для размещения в картинке тайного сообщения достаточно превратить его в цепочку битов и записать их на место последних битов в файле картинки.

Однако этим способом, при всей его элегантности, нельзя спрятать слишком много: алгоритм требует, чтобы соотношение скрываемой информации и файла-контейнера было не более 1:8.

Если же мы попытаемся изменять не только восьмые, но и седьмые или шестые биты, то картинка сильно (и подозрительно О) исказится. По правде говоря, даже изменение последних битов бывает заметным на больших однотонных участках. Поэтому хорошие стеганографические программы делают вставки только в отдельные участки картинки. В результате для скрытой передачи текста среднего объема (скажем, ЗОО Кб) надо использовать огромное письмо-контейнер объемом З Мб.

Информацию можно прятать и в звуковых файлах (как уже было сказано ранее), И в большинстве случаев это даже эффективнее: только одна секунда оцифрованного звука при частоте дискретизации 44,1 кГц и разрядности записи 8 бит в стереорежиме позволяет скрыть до 12 Кб информации! Искажение звука при этом, конечно, происходит, но незначительное и прежде всего в басовом диапазоне. Одним словом, опять нормальный человек ничего не заметит.

Интересно, что со стеганографией тесно связано такое понятие, как авторское право. Если на бумажную информацию доказать свои права достаточно сложно, то дела с цифровыми объектами обстоят намного лучше. Один знакомый автора, который прекрасно рисует в Photoshop, «прогуливаясь» по Интернету, часто замечал на других сайтах свои работы. Что, как несложно догадаться, вовсе его не радовало. Такая ситуация может произойти и с каждым из нас, если не принять меры. Но тут нам на помощь может прийти стеганография! Нарисовали вы, к примерут , классный баннер. А его взяли да и украли. Как доказать в суде свое авторство? А что мешает вам тайно внедрить в графический файл текстовую информацию примерно такого содержания: «Copyright by Петя Иванов» . Достав потом на суде из файла этот фрагмент, вы заставите судей принять единственно правильное решение (Э.

В Интернете можно найти десятки программ для компьютерной тайнописи: от больших и дорогих пакетов до маленьких бесплатных утилит. Некоторые из них используют очень причудливые алгоритмы, но всегда неизменной остается их суть: для скрытой передачи сообщения нужен подходящий носитель — «контейнер», который, во-первых, безобидно выглядит, а во-вторых, по размеру значительно больше скрытого сообщения (в пересчете на килобайты). Оба этих требования очевидны, и им подчиняются все программы. Как правило, обычные «пряталки» делают секретные вставки в 10—12 % объема «контейне-


6-

ра», но в одном из компьютерных журналов была описана программа, умеющая вставлять в несжатую картинку любой файл размером в 2/3 картинки. Вдумайтесь в эти цифры! В обои рабочего стола Windows с разрешением 1024 х 768 и размером (в формате TrueColor) 2,25 Мб можно спрятать архив в полтора мегабайта — больше, чем на дискету! При этом обои визуально не изменятся, и на вашем мониторе по-прежнему будет красоваться фотография... Чья там у вас сейчас красуется?

Задача

Предложите способ, которым в текстовом документе редактора Microsoft Word в обычном тексте можно спрятать секретный текст (который не сможет увидеть человек, не знающий, что в данном документе что-то спрятано).

13-значным!). Арифмометр, показанный на фото, был изобретен в России в 80-х гг. XIX века В. Т. Однером. Арифмометры Однера до 1970-х гг. были основными математическими машинами, которые широко применялись во многих областях деятельности человека.

Папа-программист читает сыну сказку:

И стал старик кликать золотую рыбку.

— Папа, а почему он кликал рыбку?

— Потому что мышек тогда еще не было.

Журнал «Компьютерра», N2 14—15 за 2003 г. (www . computerra . ru/offline/ 2003/489/26122/page2.htm1).

Числовые ребусы и кросснамберы

Вам, наверное, уже приходилось решать числовые ребусы, в которых некоторые (или даже все) цифры в числах зашифрованы буквами или звездочками. А теперь вам предлагается сделать то же самое с числами, записанными в других (не десятичной) системах счисления. Как обычно принято в таких головоломках, одинаковые цифры представлены одинаковыми буквами , а различные — разными. Звездочка может обозначать любую цифру.

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

7.1, Ребусы со звездочками

В приведенных ниже ребусах зашифрованы числа, записанные в двоичной системе счисления.

Это правило действует только в рамках одного примера (ребуса). В разных ребусах одна и та же цифра не обязательно обозначается одной и той же буквой. Прим. ред.

                                                15.       

                                                  16.      

                                                       18.       

                                                            20.       

                                                              21.       

                                                                 22.       

                                                                   23.       

                                                                     24.       

                                                                        25.       

                                                                          26.       

13.


27.      

28.      

7.2. Ребусы в четверичной системе счисления

Буквами зашифрованы цифры четверичной системы счисления (с основанием 4). Определите все эти цифры.

                                                       11.                      16.         02

BCD

                                                                                   17.        xw

мо

13.      


ss      18.    мн

                                                   вс                                                                   мм

14.       19. xz         NSS

                                                     ЕЕ                                               20.

мым

7,3, Числовой ребус в шестеричной системе счисления

Решите числовой ребус в шестеричной системе счисления:

ММУУ = УУ х УУ.

Как обычно, одинаковыми буквами зашифрованы одинаковые цифры, разными буквами — разные цифры.

Указания по выполнению. Составьте таблицу умножения в шестеричной системе счисления и проанализируйте ее.

7.4. Числовые ребусы в двенадцатеричной системе счисления

В приведенных ниже четырех ребусах зашифрованы числа в двенаДцатеричной системе счисления.

Ребус ЛЕ 1


                                         Р Е к             Т Р И

    и

      с    

Т Р И

г Е к г Е к

0

Ребус ЛЕ 2

                                                        А з

и З Е Т

З Е Т

з Е т

ы з Б Е

Ребус Лё З

и к с

                   с                    П И Я В К А

 Р и

п я Т Ь

д

к о т

Ребус Лё 4

1 и к с и к с

Чтобы вам легче было решать эти ребусы, приведу таблицы умножения и сложения в двенадцатеричной системе счисления (табл. 7.1 и 7.2.). Дополнительные цифры (1010 и 1110) обозначены, соответственно, как А и В.


Таблица 7.1

 

 

2

 

 

 

 

7

8

9

А

В

1

1

2

З

4

5

6

7

8

9

А

в

2

2

4

6

8

А

10

12

14

16

18

 

з

з

6

9

10

13

16

19

20

23

26

29

4

4

8

 

14

18

 

24

28

 

34

38

5

5

А

13

18

21

26

 

34

39

42

47

6

6

10

16

20

26

зо

 

40

46

50

56

7

7

12

19

24

 

36

41

48

53

65

8

8

14

20

28

 

40

48

54

60

68

74

9

9

16

23

зо

 

46

53

60

69

76

83

 

А

18

26

 

42

 

 

68

 

84

92

в

 

 

29

38

47

56

65

74

83

92

 

Таблица 7.2

 

1

2

з

4

5

6

7

8

9

А

В

1

2

з

4

5

6

7

8

9

А

в

10

2

з

4

5

6

7

8

9

 

в

10

11

 

4

5

6

7

8

9

А

в

10

11

12

4

5

6

7

8

9

А

в

10

11

12

13

5

6

7

8

9

А

в

10

11

12

 

14

 

7

8

9

А

в

10

11

12

 

14

15

7

8

9

А

в

10

11

12

 

14

15

16

8

9

А

в

10

11

12

 

14

15

16

17

9

А

в

10

11

12

 

14

15

16

17

18

А

в

10

11

12

13

14

15

16

17

18

19

в

10

11

12

 

14

15

16

17

18

19

 

7.5. Числовой ребус в системе счисления с неизвестным основанием

При каком основании системы счисления имеет решение (и какое) следующий числовой ребус:

к и т о к и о т о т о к и о

7.6. Кросснамберы


Кросснамбер Л? 1

По горизонтали;

1. Число, образованное первыми четырьмя цифрами в количестве отображаемых цветов при глубине цвета 16 (режим High Color).

З. Количество битов в 153 байтах.

6.  Значение суммы 12753089 + 25436079 в девятеричной системе счисления.

7.  Основание системы счисления, числа в которой записываются с символом «$» или «Н» в конце числа.

8.  Совершенное число (совершенными называются числа, равные сумме всех своих делителей).

9.  Десятичное число — эквивалент числа 445016

11. Это число используется в двух различных записях разрешающей способности монитора.

14. Десятичное число 1261 в системе счисления, используемой в компьютере.

17. Одна из версий операционной системы Windows.

18. Год рождения автора книги.

20. Основание общепринятой системы счисления.

22.  Этому десятичному числу в шестнадцатеричной системе счисления соответствует цифра Р.

23.  Значение суммы 27305648 + 16413648 в восьмеричной системе счисления.

24.  Год выпуска первой в мире ЭВМ «ENIAC».

25. 


Число, одинаковое при его прочтении в «нормальном» виде и «вверх тормашками».

По вертикали:

1. Максимальное 6-значное семеричное число.

2. Десятичное число — эквивалент числа 64866089.

З. Разность двоичных чисел 11011010 и 1100011.

4.   Количество байтов в 1101010102 килобайтах.

5.   Количество байтов в одном килобайте.

10. Двести тысяч дюжин.

12.  Сумма пятеричных чисел 232321 и 1422433, записанная в пятеричной системе счисления.

13.  Количество битов в 6 килобайтах.

15. Количество байтов в одном мегабайте.

16. Десятичное число — эквивалент числа 126463627.

17. Десятичное число 574 в троичной системе счисления.

19. Десятичное число — эквивалент числа 33377278.

21. Количество различных символов, которое можно закодировать, используя 7-битную кодировку.


Кросснамбер ЛФ 2

По горизонтали:

З. Десятичное число 23 в двоичной системе счисления.

5. Максимальное 5-значное число в четверичной системе счисления.

7. Количество битов в одном килобайте.

9.       Глубина цвета в режиме True Color.

10. Количество байтов в 200 битах.

11. Количество байтов в сумме З Кб + 189 байт.

12. Количество лет в 100 веках.

13. Значение суммы 31145 + 331345 в пятеричной системе счисления.

18.   Разность восьмеричных чисел 3000 и 761.

19.   Год начала публикации в газете «Информатика» раздела для учащихся «В мир информатики» .

20.   Количество байтов в /2 Гб.

21.   Значение члена последовательности Фибоначчи с номером 2 4.

22.   Сумма первых ... (см. п. 2 по вертикали) членов арифметической прогрессии, первый член которой равен 2, а разность равна 4.

23.   Количество битов в 41 Мб.

27.   Разность двоичных чисел 1101 и 11.

28.   Количество секунд в одном часе.

29.   Значение 10110 в троичной системе счисления.

33.   Это десятичное число обозначается приставкой «кило».

34.   Столько мгновений весны фигурирует в названии известного телесериала по роману Юлиана Семенова.

35.   Десять диаметров дискет (округленное значение в дюймах).

36.   Десятичное значение числа 1100111001102.

37.   Десятичное число, равное MMMCMXLVII • 1010 + 710 (первый сомножитель — число, записанное римскими цифрами).

39. Десятичное значение произведения 1A7F16 • 1010

По вертикали:

1.   Десятичное число, которому в шестнадцатеричной системе счисления соответствует цифра В.

2.   «Чертова дюжина».

З. Разность двоичных чисел 110010 и 11101 (в двоичной системе счисления).

4.  


Количество байтов в 10 килобайтах.

5.   Значение числа 407810 в шестеричной системе счисления.

6.   Десятичное значение числа 8B4F16

8. Значение числа 6982110 в восьмеричной системе счисления.

11. Значение суммы 1311234 + 1212334 в четверичной системе счисления.

14. Количество байтов в сумме 2 Мб + 187 Кб + 975 байт.

15. Количество символов (и, соответственно, их кодов) в стандартном наборе системы кодировки ASCII.

16. Десятичное число, которому в римской системе счисления соответствует цифра С.

17. Количество битов в одном мегабайте.

23.   Общее количество пикселей при разрешении экрана 640 х 480.

24.   Десятичное число, которое римскими цифрами записывается в виде СМХЫХ.

25.   Количество гигабайтов в 248 034 361 344 байтах.

26.   Значение числа 205939510 в двенадцатеричной системе счисления.

29. Значение числа 1100001112 в четверичной системе счисления. 30. Количество байтов в 200856 битах.

31.   Количество различных символов, которые можно закодировать, используя двухбайтную кодировку.


32.   Десятичное число 26 в двоичном виде.

38. Это число при игре в лото называют «стульчики».

40. Умноженное на высшую школьную оценку основание системы счисления, в которой, кроме десяти десятичных цифр, используются также цифры А, В, С, 1), Е и F.

Кросснамбер «Римская система счисления»

 

1

 

 

2

 

 

з

 

 

4

 

5

 

 

 

 

 

 

7

 

 

 

8

 

 

 

 

 

 

9

 

 

 

 

10

 

 

11

12

 

 

 

13

 

14

 

 

 

 

 

 

15

 

 

 

 

 

16

17

 

 

18

19

 

 

 

 

20

21

 

 

 

 

22

 

 

23

 

 

24

 

 

25

26

 

 

 

 

 

 

27

 

 

 

28

 

 

 

 

 

 

 

 

 

29

 

 

 

 

 

 

 

 

30

 

 

31

 

 

 

 

32

 

 

 

 

По горизонтали:                                   По вертикали:

 

1.

80

18.

2001

з.

750

20.

3000

5.

510

22.

2400

7.

15

24.

209

8.

39

26.

900

9.

1001

27.

150

10.

40

28.

870

11.

94

29.

90

13.

26

30.

9

15.

109

31.

800

16.

201

32.

8

 

1.

79

17.

190

2.

34

19.

2100

з.

630

21.

1705

4.

81

22.

3400

6.

1026

23.

790

12.

зоо

24.

175

 

7

25.

97

Примечание. В первом и в третьем столбцах указаны порядковые номера чисел, а во втором и четвертом столбцах — десятичные числа, которые нужно записать в кросснамбер в римской системе счисления.

[

Кросснамбер «Двоичная система счисления»

По горизонтали:

1. Десятичное значение числа 101101101012.

З. «Чертова дюжина» в двоичной системе счисления.

6.   Значение числа 9110 в двоичной системе счисления.

7.   Значение суммы 1112 + 1012 в двоичной системе счисления.

9. Значение частного 1100102 / 1012 в двоичной системе счисления.

11. Количество байтов в сумме / 4 Кб + 1 /8 Кб + 2 байта в двоичной системе счисления.

14. Десятичное число, которое при игре в лото называют «барабанные палочки» , записанное в двоичной системе счисления.

16. Значение частного 3010 / 102 в двоичной системе счисления.

18. Двоичное число, которому соответствует десятичное число, читающееся одинаково и в «нормальном» виде, и «вверх тормашками » .

20. Десятичное значение числа 100010011002.

По вертикали:

1. Значение числа 2110 в двоичной системе счисления.

2. Значение произведения 10012 • 210 в двоичной системе счисления.

З. Значение разности 111002 — 1112 в двоичной системе счисления.

4.   Полтора пуда в двоичной системе счисления.

107

5.   Значение числа 161710 в двоичной системе счисления.

8. Значение частного 1000012 / 11012 в двоичной системе счисления.

10. Один век в десятичной системе счисления.

12.  Высшая школьная оценка, записанная в ...-й системе счисления.

13.  Максимальное трехзначное двоичное число.

14.  Значение частного 1112 / 112 в двоичной системе счисления.

15.  Значение числа (5 в двоичной системе счисления.

16.  Значение суммы 11102+ 11012 в двоичной системе счисления.

17.  Значение числа 1810 в двоичной системе счисления.

Счислитель Куммера

Одной из особенностей вычислений на счетах является необходимость особых действий, когда при сложении происходит перенос единицы в старший разряд или когда при вычитании требуется заимствование единицы из старшего разряда. В 1846 г. петербургский учитель музыки Куммер представил Академии наук проект изобретенного им устройства, в котором перенос и стержень для заимствование единицы происходят «ввода» чисел автоматически. «Современный» вариант этого устройства — так называемого «счислителя Куммера» показан на рисунке.

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


На пальцах и в уме

Тр огда 9-летнему Карлу Гауссу учитель предложил найти сумп му всех целых чисел от 1 до 100, будущий великий математик, подумав всего несколько секунд, правильно назвал результат — 5050. Карл сумел заметить, что суммы первого и последнего, второго и предпоследнего и т. д. чисел одинаковы и равны 101. Умножив в уме эту сумму на общее количество таких пар чисел (50), он и получил искомое значение.

В прошлом веке в цирке и на эстраде выступали артисты, поражавшие публику своими феноменальными способностями, они достаточно быстро перемножали в уме многозначные числа, извлекали корни и т. п.

Конечно, автор не предлагает каждому читателю стать таким «фокусником» , но все же многие из приведенных в данной главе приемов могут оказаться полезными — ведь не всегда под рукой имеется калькулятор, а тем более компьютер...

8.1. Рука человека как счетная машина

Знаете ли вы, что ваши руки представляют собой простейшую счетную машину, которую можно использовать для вычислений?

109

е

1.Положите обе руки рядом на стол и распрямите пальцы. Пусть каждый палец по порядку обозначает соответствующее число: первый слева — 1, второй за ним — 2, третий — З и т, д. до десятого, который обозначает 10. Пусть теперь требуется умножить любое из первых десяти натуральных чисел на 9. Для этого достаточно приподнять вверх (или загнуть) палец, который обозначает умножаемое число. Тогда остальные пальцы, оказавшиеся слева от поднятого, покажут число десятков, а количество пальцев справа покажет число единиц искомого произведения.

Например, пусть надо умножить 8 на 9. Положите обе руки на стол и поднимите (или загните) восьмой палец. Слева от него 7 пальцев, справа 2. Значит, результат умножения 8 на 9 равен 72 (рис. 8.1). Так что если ваш младший брат (или младшая сестра) жалуется, что ему (ей) трудно запомнить таблицу умножения на 9, то научите его (ее) пользоваться простейшей вычислительной машиной — руками.

Рис. 8.1

Ответьте на вопрос: в чем секрет работы такой «машины»?

2.С помощью рук можно также вычислять произведение любых однозначных чисел, больших 5. Пусть, например, нам надо умножить 7 на 8. Для этого загнем на левой руке столько пальцев, на сколько первый сомножитель превышает 5, а на правой руке — столько пальцев, на сколько второй сомножитель превышает 5 (рис. 8.2). Затем количество загнутых пальцев на обеих руках умножим на десять и прибавим произведение количества распрямленных пальцев правой руки на количество распрямленных пальцев левой: 5 х 10 + 2 х З = 56.

Проверьте вычисления для других сомножителях. Почему этот способ умножения всегда дает правильный результат?

Рис. 8.2

З. Еще один пример использования рук в качестве «вычислительной машины» предложил в 1983 г. бывший тогда семиклассником Миша Перваков из г. Егорьевска Московской области. Пальцы рук можно использовать для запоминания значений и знаков синуса и косинуса основных углов. Посмотрим на ладонь левой руки и пронумеруем пальцы так: мизинец — О, безымянный — 1, средний — 2, указательный — З, большой — 4. Тогда при широко расставленных пальцах они примерно соответствуют «основным» углам первого квадранта: 00 , 300 , 450 600 , 900 (рис. 8.3). Синусы же этих углов будут равны половине квадратного корня из присвоенного пальцу номера. Пример:

1 sin 45' номер среднего пальца = — ф.

2

600

Рис. 8.3


в

Значение косинуса определяется аналогично, только пальцы для этого нужно пронумеровать в обратном порядке: большой о мизинец — 4.

Все эти значения можно свести в легко запоминающуюся таблицу (табл. 8.1).

Таблица 8.1

 

 

зоо

 

600

900

sin а

 

 

 

 

 

cos а

 

 

 

 

46/2

8.2. Возведение двузначных чисел в квадрат

Хотите удивить своих друзей способностью в уме возводить в квадрат двузначные числа? Тогда разберитесь в следующих примерах:

51 2 - 2601;

52 2 - 2704;

562 - 3136; 59 2 - 3481.

Вы, наверное, уже заметили закономерности при вычислении результата — квадрат числа п представляет собой четырехзначное число, у которого:

1)                       число, образуемое двумя последними цифрами, равно квадрату второй цифры числа п;

2)                       число, образуемое двумя первыми цифрами, равно сумме 25 и второй цифры заданного числа.

Правда, хочу сразу вас разочаровать — это правило справедливо только для чисел шестого десятка (50, 51, 52 59). Однако для чисел пятого десятка тоже есть свой, несколько более сложный алгоритм. Чтобы возвести в квадрат число пятого десятка , 42 49), надо к количеству единиц прибавить число 15, а затем к полученной сумме приписать квадрат дополнения количества единиц до 10 (если этот квадрат однозначное число, то перед ним приписывается О). Примеры:

(15 + 3) 100 + 7 2 1849;

48 2 = (15 + 8) • 100 + 2 2 - - 2304.

Задания

1.  Докажите с помощью формул справедливость приведенных выше правил.

2.  Установите правило, по которому можно быстро возводить в квадрат числа первого десятка шестой сотни (501 , 502 509).

112

8.3. Еще восемь приемов быстрого счета

83.1. Быстрое возведение в квадрат

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

352 = 1225, т. е. 25 приписано к произведению З на 4;

852 -— 7225, т. е. 25 приписано к произведению 8 на 9

8.3.2. Квадраты чисел, состоящих из единиц

83,3. Другие степени числа 11

Если вам понадобится вычислить другие (кроме квадрата) степени числа 11, то для этого может быть использован так называемый «треугольник Паскаля» схема расположения чисел в виде треугольника, в котором все числа на «правой» и «левой» сторонах равны 1, а все остальные числа равны суммам двух чисел, находящихся в вышерасположенной строке над тем или иным числом правее и левее (см. рис 8.4).

Рис. 8.4

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

е

83,4. Произведение двух «особых» чисел

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

   48 х 42    4 х 5 = 20; 8 х 2 = 16 — 48 х 42 = 2016;

     99 х 91         9 х 10 = 90;    9 х 1 —          99 Х 91 = 9009;

102 х 108 10 х 11 = 110; 2 х 8 - 16 102 х 108 = 11016.

83,5. Умножение числа 37

Число 37 обладает многими любопытными свойствами. Одно из них состоит в том, что при умножении этого числа на З и на числа, кратные трем (до 27 включительно), получаются произведения, состоящие из трех одинаковых цифр:

37= 111;

37 х 6 - 222;

37 х 9 = 333;

 12 — 444;

37  15 = 555;

 18 — 666;

37 х 21 = 777;

37 24 - 888; 37 х 27 = 999.

Как можно легко запомнить эту таблицу результатов?

8.3.6. Особенные случаи умножения на 9

Вот несколько интересных примеров умножения на 9:

12108                                                21189

123107;                                           321889;

1 234                        106;                 4 321           х 9=38 889;

12 34554 321                                                      х 9 = 488 889;

123 456                  111 104;            654 321        х 9-5 888 889;

1 234 567      х 9=11 111 103;          7 654 321    х 9 = 68 888 889;

12 345 678111 102;              87654 321 х 9 = 788 888 889;

123 456 789 х 9-1 111 111 101;            987 654 321 х 888 888 889.

114

Из приведенных здесь равенств выведите правила умножения на 9:

1)                       для чисел, являющихся последовательностью подряд идущих цифр от 1 до п (2 п < 9);

2)                       для чисел, являющихся последовательностью подряд идущих цифр от п до 1 (2 п < 9).

8.37. Особенные случаи деления на 9

Рассмотрим несколько примеров на деление:

117

: 9 = 13;

1 116

: 9 -124;

11 115

: 9 -1 235;

111 114

: 9 -12 346;

1 111 113

 = 123457;

11 111 112

: 9 -1 234 568;

111 111 112

1 234 5679.

Выведите правило определения частного от деления на 9 для

чисел, составленных из единиц и одной из цифр 2, З 7 и заведомо делящихся на 9 (напомним, что на 9 делятся числа, сумма цифр которых кратна девяти).

838. Деление на число без восьмерки

Возьмем число 12 345 679 (оно содержит последовательно все цифры от 1 до 9, кроме цифры 8). Найдем частные от деления чисел 1, 2 9 на это число:

1 : 12 345 679 2: 12 345 679 з : 12 345 679 4: 12 345 679

5 : 12 345 679 6: 12 345 679 7: 12 345 679

8 : 12 345 679

9: 12 345 679

Выведите правило определения частного для рассмотренных примеров.

Задания

1, Докажите с помощью формул справедливость приведенного в пункте 8.3.1 правила для трехзначных, четырехзначных и т. д.

числам.

2. Проверьте, можно ли с помощью треугольника Паскаля вычислить пятую и более высокие степени числа 11.

З. Докажите с помощью формул справедливость правила, приведенного в пункте 8.3.4.

8,4, Извлечение корня — не на пальцах и не в уме

Конечно, вы наверняка умеете умножать «в столбик» и делить числа на бумаге. А умеете ли вы аналогичным образом извлекать квадратные и кубические корни? Ниже приводится простой и легко запоминающийся метод таких вычислений, который был описан древнегреческим ученым Героном примерно 2000 лет назад . Прежде чем рассказать о нем, заметим, что речь будет идти о приближенных вычислениях и что при извлечении корня любой степени результат будет иметь по меньшей мере столько верных цифр, сколько их было в подкоренном числе. Например, извлекая квадратный корень из приближенного числа 40,00, можно получить четыре верных цифры ( 40,00 = 6,324).

8.4.1. Правило извлечения квадратного корня

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

1)                       разделить подкоренное число на первое приближение корня; если окажется, что полученное частное отличается от этого первого приближения на величину, не превышающую допустимуко погрешность, то можно считать, что задача решена — корень извлечен;

2)                       в противном случае — найти среднее арифметическое делителя и частного. Оно дает гораздо более точное значение (второе приближение) корня. При более или менее близком к точному выборе первого приближения это второе приближение дает З верные цифры (а обычно — не менее четырех верных цифр). Вообще же в каждом новом приближении количество верных цифр удваивается по сравнению с предыдущим;

З) подвергнуть второе приближение такому же испытанию, как и первое, т. е. разделить подкоренное число на второе приближение. Если окажется, что точность результата недостаточна, то найти третье приближение тем же способом, каким нашли второе, и т. д.

Герон пользовался простыми дробями; мы же будем использовать десятичные дроби.

116

Примечание. Изложенный способ «не боится ошибок» — он автоматически исправляет арифметическую ошибку, если она допущена на предыдущем этапе. Единственным вредным последствием такой ошибки будет замедление выкладок.

Пример 1. 40,00.

Подкоренное число имеет четыре верные цифры, поэтому нет смысла вычислять более четырех цифр корня.

За первое приближение надо принять какое-нибудь число, заключенное между 6 и 7, так как 6 2 = 36 меньше подкоренного числа, а 7 2 = 49 — больше. В этих границах можно взять любое число, но лучше взять число, меньшее чем 6,5 (так как подкоренное число значительно ближе к 6 2 , чем к 7 2 ). Возьмем, например, 6,4 Далее поступаем так.

1, Делим (на бумаге, «в столбик») подкоренное число 40,00 на первое приближение 6,4: 40,00/6,4 = 6,25. Частное 6,25 отличается от делимого 6,4 уже во второй цифре, значит, точность результата недостаточна.

2. В качестве второго приближения берем среднее арифметическое значение делимого 6,40 и частного 6,25: (6,40 + 6,25) / 2 — 6,325. Можно ожидать, что в этом втором приближении верны если не все четыре, то по крайней мере первые три цифры.

З. Для проверки делим подкоренное число 40,00 на второе приближение 6,325 (доводя деление до четвертой цифры): 40,00 / 6,325 6,324. Полученное частное 6,324 отличается от делителя 6,325 лишь на единицу в четвертом знаке. Отсюда следует, что корень с требуемой степенью точности найден.

Действительно, если возвести число 6,324 в квадрат, т. е. умножить его на 6,324, то мы получим число, меньшее чем произведение 6,324 • 6,325, которое приближенно составляет 40,00. Если же возвести в квадрат число 6,325, то получится число, большее чем 6,325 • 6,324 40,00. Следовательно, искомый квадратный корень лежит между 6,324 и 6,325, т. е. он отличается от 6,324 (или от 6,325) меньше чем на единицу четвертого знака. Ответ: 40,00 = 6,324 (все 4 знака верны).

Пример 2. 23,5.

Искомый корень заключается между 4 и 5 и лежит гораздо ближе к 5, чем к 4 (так как 23,5 гораздо ближе к 25, чем к 16). Тогда возьмем за первое приближение круглое число 5,0.

Можно взять число 6,3 или 6,2, но брать 6,1 нет смысла, так как 6,1 слишком близко к 6.

е

1.                        Разделим подкоренное число 23,5 на первое приближение 5,00 (доводя частное до третьей цифры): 23,5 / 5,0 4,70.

2.                        В качестве второго приближения возьмем среднее арифметическое (5,00 + 4,70) / 2 = 4,85. Можно ожидать, что в нем все три цифры верны.

З. Для контроля разделим подкоренное число 23,5 на второе приближение 4,85: 23,5 / 4,85 = 4,85. Так как частное равно (с точностью до третьего знака) делителю, то корень с максимально возможной степенью точности извлечен. Ответ: 23,5 = 4,85.

Замечание. Если подкоренное число представляет собой десятичную дробь, имеющую в целой части одну значащую цифру или нуль, то для получения первого приближения рекомендуется перенести запятую вправо на две, четыре, шесть и т. д. цифр с таким расчетом, чтобы в целой части оказалось небольшое количество знаков. Далее надо поступить так же, как в примерах 1 и 2, а в окончательном результате перенести запятую в обратном направлении (влево) на одну, две, три и т. д. цифры. Аналогично можно поступить и тогда, когда подкоренное число имеет многозначную целую часть; в этом случае запятую вначале надо перенести влево на две, четыре, шесть и т. д. цифр. Вообще же в подкоренном числе запятую можно переносить только на четное количество цифр.

Пример З. 0,008732.

Переносим запятую на 4 знака вправо и получаем число 87,32. При выборе первого приближения будем учитывать только его целую часть и примем за первое приближение, например, число 9,3.

1.                       Делим 87,32 на 9,3. Продолжая деление до четвертой значащей цифры, получим: 87,32 / 9,3 9,389.

2.                       Находим среднее арифметическое: (9,300 + 9,389) / 2 9,344.

З. Для контроля выполняем деление: 87,32 / 9,344 9,345. Значит, в любом из чисел 9,344 или 9,345 все четыре знака верные (первое дает недостаточное приближение, второе — избыточное).

4. Так как вначале мы перенесли запятую вправо на 4 знака, то в обратном направлении т. е. влево) запятую надо перенести на 2 знака. Получаем ответ: 0,008732

Пример 4. 8732000.

Переносим запятую влево на 6 цифр и получаем число 8, 732 (если перенести запятую на 4 цифры, то получится 873,2, но не 87,32, как в предыдущем примере !). За первое приближение примем число З.

118

1.                Делим: 8,732 / З = 2,911.

2.                Вычисляем среднее арифметическое: (3,000 + 2,911) / 2 — = 2,955.

Понятно, что в первом приближении (3,000) были две верные цифры. Поэтому надо ожидать, что во втором приближении будут верны 4 цифры. Контроль подтверждает это.

З. Так как вначале мы перенесли запятую влево на 6 знаков, то теперь переносим ее в обратном направлении (вправо) на З знака. Ответ: 8732000 -2955.

Задание

Найдите приближенные значения корней: 70,00, 41,2, 0,002582, 1294000.

8.4.2. Правило извлечения кубического корня

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

1.                       Деление на это первое приближение выполняется дважды: сначала делимым служит подкоренное число, а затем — число, полученное в результате первого деления. Если частное, полученное после второго деления, отличается от первого приближения (т. е. от делителя) на величину, не превышающую допустимой погрешности, то задача решена — корень извлечен.

2.                       В противном случае надо найти среднее арифметическое трех чисел — частного (после двух делений) и дважды взятого делителя . Получим второе приближение, в котором (при более или менее близком к истине выборе первого приближения) три цифры будут верными, а четвертая в худшем случае потребует исправления на 1.

З. Второе приближение можно подвергнуть такому же испытанию, как и первое, но этот контроль довольно утомителен.

Пример 1. 3 785,0.

Искомый корень заключен между 9 и 10. За первое приближение возьмем 9,2 (так как подкоренное число примерно в 4 раза ближе к 9 3 , чем к 10 3 ).

1.Надо разделить на 9,2 сначала подкоренное число 785,0, а затем — получившееся частное: 785,0 / 9,2 / 9,2. Вместо этого можно разделить 785 на 9,22 = 84,64. Получаем: 785,0 / 9,2 / 9,2 = - 785,0 / 84,64 9,275.

Почему именно так, будет понятно при решении примера 1.

2.Как видим, первое приближение имеет две верные цифры. Чтобы наилучшим образом найти второе приближение, учтем, что подкоренное число 785,0 оказалось произведением трех неравных сомножителей: 785,0 = 9,2 • 9,2 • 9,275, а нам надо представить его в виде произведения трех равных сомножителей: 785,0 х • х • х (где х = 3 785,0). Естественно предположить, что каждый из этих равных сомножителей должен примерно равняться среднему арифметическому сомножителей 9,2, 9,2 и 9,275, Поэтому в качестве второго приближения мы берем среднее арифметическое: (9,275 + 9,200 + 9,200) / З = 9,225.

З. Для контроля можно разделить подкоренное число 785,0 на второе приближение 9,225, а результат — еще раз разделить на 9,225 (или разделить подкоренное число на 9,225 2 85,09). Получим значение 9,225 (если же при вычислениях не сохранять «запасную» цифру, то получится 9,224).

Ответ: 3 785,0 = 9,225 (все 4 цифры верны).

Замечание. При определении первого приближения бывает полезно перенести запятую в подкоренном числе вправо (или влево) на З, 6, 9 и т. д. цифр. Тогда в окончательном результате надо -перенести запятую в обратном направлении на 1, 2, З и т. д. цифры. Переносить запятую в исходном числе можно только через такое число цифр, которое Делится на З.

Пример 2. 3 18350.

В подкоренном числе 18350 переносим запятую (подразумеваемую после цифры единиц) влево на три цифры и получаем число 18,35. Оно находится примерно посредине между 2 3 = 8 и 3 3 = 27, поэтому за первое приближение мы принимаем число 2,5.

1.                       Надо дважды выполнить деление на 2,5 (или, что то же самое, один раз разделить число 18,35 на 2,5 2 ): 18,35 / 2,5 / 2,5 — - 18,35 / 6,25 2,94.

2.                       Как видим, в первом приближении верна только одна цифра. Значит, можно ожидать, что во втором приближении будет лишь две верные цифры. Поэтому в следующем действии мы ведем вычисления только для двух знаков, а в качестве второго приближения берем среднее арифметическое (2,5 + 2,5 + 2,9) / З 2,6.

З. Чтобы уточнить результат, надо дважды выполнить деление на 2,6: 18,35 / 2,6 / 2,6 = 18,35 / 6,76 2,715.

4. Как видим, второе приближение имеет две верных цифры. Значит, третье, вероятно, будет иметь 4 верных цифры.

5. В качестве третьего приближения берем среднее арифметическое.• (2,715 + 2,600 + 2,600) / З = 2,638.

6. Контроль (который мы здесь не приводим) показал бы, что в полученном результате все четыре цифры верны. Осталось лишь сместить запятую на один знак вправо. Ответ: 18350 -26,38.

Задание

Найдите приближенные значения корней: 3 285,0, з 51830.

8.5. Извлечение кубического корня в уме

У внимательного читателя, конечно, уже возник вопрос: если можно извлечь корень в уме, то зачем нужно было в предыдущем параграфе описывать метод, который изобрел Герон?

Дело в том, что далее будет описана методика извлечения кубического корня из целых чисел, являющихся точными кубами. Особенно эффектно она выглядит при показе математических фокусов (видите — все таки мы не обошлись без фокусов! О). Такой фокус заключается в том, что зритель (возведя некоторое число в куб, — скажем, на калькуляторе) объявляет результат, а вы, немного подумав, называете кубический корень из него.

Для этого прежде всего нужно выучить кубы чисел от 1 до 10 (табл. 8.2).

Таблица 8.2

Число

1

2

з

4

5

6

7

8

9

10

Его куб

 

8

 

64

125

216

343

512

729

1000

При изучении этой таблицы обнаруживается, что все цифры, на которые оканчиваются кубы, различны, но во всех случаях (за исключением 2 и З, а также 7 и 8) последняя цифра куба совпадает с самим числом, возводимым в куб. В «исключительных» же случаях (для чисел 2, З, 7 и 8) последняя цифра куба равна разности между 10 и числом, возводимым в куб.

Эти обстоятельства и используются для быстрого извлечения кубического корня. Пусть зритель сообщил вам, например, число 250047. Последняя цифра этого числа 7, из чего немедленно следует, что последней цифрой кубического корня должна быть З. Первую же цифру кубического корня мы находим следующим образом. Зачеркнем последние три цифры куба (независимо от количества его цифр) и рассмотрим цифры, стоящие впереДИ, — в нашем случае это 250. Число 250 располагается в таблице кубов между кубами шестерки и семерки. Меньшая из этих цифр (в нашем случае — 6) и будет первой цифрой кубического корня. Поэтому правильный ответ — число 63.

Чтобы лучше понять суть дела, приведем еще один пример. Пусть названо число 19683. Его последняя цифра З указывает, что последней цифрой кубического корня будет 7. Зачеркивая последние три цифры, получаем число 19, которое лежит между кубом двойки и кубом тройки. Меньшим из этих чисел будет 2, поэтому искомый кубический корень — это число 27.

Задание

Найдите кубический корень из следующих чисел, являющихся точным кубом: 21952; 11649; 941192; 14706125.

8.6. Сокращенное вычисление среднего арифметического

Вы, конечно, знаете, что средним арифметическим нескольких чисел называют частное от деления суммы этих чисел на их количество .

Числа, для которых вычисляется среднее арифметическое, обычно мало отличаются друг от друга (например, при вычислении среднего роста учеников в классе). В таких случаях расчет среднего арифметического можно значительно облегчить с помощью следующего приема.

1.                      Выбираем произвольно какое-либо число, близкое к заданным числам. Если эти числа отличаются друг от друга только в последней цифре, то в выбираемом числе предпочтительно взять за последнюю цифру О; если исходные числа отличаются друг от друга в двух последних цифрах, то удобно взять число с двумя нулями и т. д.

2.                      Вычитаем это число по очереди из всех заданных чисел . З. Находим среднее арифметическое найденных разностей.

4. Прибавляем это среднее арифметическое к взятому числу.

Пример. Пусть измеряется расстояние между двумя точками на местности с помощью 10-метровой рулетки с сантиметровыми делениями. Сделано 10 замеров. Их результаты (в метрах): 62,36; 62,30; 62,32; 62,31; 62,36; 62,35; 62,33; 62,32; 62,38; 62,37 (различие результатов объясняется случайными неточностями измерения). Требуется вычислить среднее арифметическое найденных значений.

Решение

1.               Выбираем из заданных чисел число 62,30.

При этом могут получаться как положительные, так и отрицательные числа. Если это нежелательно, то нужно взять число, меньшее всех данных чисел. Но вычисления будут несколько легче, если взять какое-либо среднее значение между заданными числами .

 

122

2.               Вычитаем 62,30 из всех заданных чисел „—- получим разности (цифры сотых долей) 6; О; 2; 1; 6; 5; З; 2; 8; 7.

З. Берем среднее арифметическое этих разностей получаем число 0,04.

4. Прибавляем 0,04 к 62,30 — получаем число 62,34. Это и есть искомое среднее арифметическое.

Задание

Вычислите среднее арифметическое значений роста десяти своих одноклассников.

Перфоленты и перфокарты

Носителями информации в электронно-вычислительных машинах первых поколений были перфокарты (перфорированные картонные карточки) и перфоленты. Информация на них представлялась наличием или отсутствием отверстий в определенных позициях карты или ленты.

Программисту нужно попасть на двенадцатый этаж. Он заходит в лифт, нажимает кнопку « 1», затем «2» и ищет кнопку с надписью Enter.


Семь полезных программ, и не только

Когда человек хочет передвинуть гору, он начинает с того, что убирает маленькие камни.

сли вы хотите стать хорошим программистом, то учтите, что одним из важных условий этого является большой опыт решения различных задач по программированию. А потому решайте побольше разных задач — абстрактных и содержательных, «на 5 минут» и «на день работы». Все это обязательно вам пригодится, как наверняка пригодятся задачи, приведенные в этой главе...

9.1. Превратим компьютер в будильник

Прежде чем сделать это, давайте разработаем программу, показывающую на экране текущее время. В большинстве современных языков программирования предусмотрена стандартная процедура (или функция), возвращающая текущее время, которое отслеживается в компьютере и хранится в специальной энергонезависимой памяти. В Бейсике это функция TIME$, а в Паскале процедура GetT ime.

 

124

Начнем с Бейсика (ведь этот язык программирования появился раньше, чем язык Паскаль 9). В нем функция TIME$ возвращает значение времени в виде восьмисимвольной строки в формате ЧЧ : ММ: СС, где (АЧ — час (значения от 00 до 23), ММ — минута (от 00 до 59), сс — секунда (от 00 до 59), а символы двоеточия играют роль разделителей.

Простейшая программа на Бейсике, выводящая текущее время в середине экрана, имеет вид:

CLS

DO

ОСАТЕ 13, 36

PRINT ТIМЕ$ пор UNTIL 1NkEY$

Чтобы прекратить работу этой программы, достаточно нажать любую клавишу.

На языке Паскаль соответствующая программа выглядит так:

Uses CRT, DOS,•

Var hour, minute, second, sec100: word;

BEGIN

Repeat

C1rscr;

GetTime (hour, minute, second, sec100) ;

GotoXY (36, 13) ;

Write (hour,    minute,      second, '     sec100) Until keypressed;

Здесь процедура GetTime возвращает четыре значения: hour — час (в диапазоне от О до 23); minute минута (в диапазоне от О до 59); second секунда (в диапазоне от О до 59); sec100 — сотые доли секунды (в диапазоне от О до 99). Для выхода из этой программы также необходимо нажать любую клавишу.

Как теперь нужно изменить эти программы, чтобы компьютер работал как будильник, — вы, наверное, уже поняли:

1)                       для условия окончания оператора цикла с постусловием следует использовать условие со значением необходимого времени «срабатывания будильника» ;

2)                       после завершающего оператора цикла необходимо записать какой-либо оператор, вызывающий звуковой сигнал.

Например, чтобы звуковой сигнал прозвучал в 10 часов утра, эти программы надо оформить следующим образом:

Бейсик:

CLS

DO

LOCATE 13, 36

PRINT ТIМЕ$

       LOOP UNTXL VAL (LEFT$ (ТIМЕ$,                 10

DO

ВЕЕР

LOOP UNTXL 1NkEY$ Паскаль:

uses CRT, DOS,•

Var hour, minute, second, sec100 : word;

BEGIN

Repeat

C1rscr;

GetTime (hour, minute, second, sec100) ; GotoXY (36,

                Write (hour, 'minute, '          second,          sec100)

Unti1 hour

Repeat

Sound(2000)

Until keypressed; Nosound

END .

Задание

Измените программу (на том языке программирования, которым вы владеете) так, чтобы «будильник» срабатывал при заданных произвольных значениях часов и минут.

9.2. Как установить на программу пароль

Наверняка у вас, уважаемый читатель, иногда возникает желание (или необходимость) оформить какую-то программу так, чтобы ею никто не мог пользоваться, кроме вас. Для этого можно добавить в программу (в ее начале) следующий фрагмент:

Бейсик:

      1NPUT ”Введите пароль        pass$;

Паскаль:

Write ( ' Введите пароль

Read1n (pass) ;

 

126

Здесь pass — имя текстовой переменной, которая будет хранить значение пароля. Кроме того, нужно предусмотреть многократный повтор указанных операторов до тех пор, пока не будет введен правильный пароль, либо какие-то другие действия (например, завершение работы программы при вводе неправильного пароля).

Однако такой вариант не является абсолютно надежным. Кто-то посторонний может издалека увидеть набранный вами пароль на экране. Безопаснее оформить программу так, чтобы вводимый пароль не отображался на экране.

Проиллюстрируем такую возможность на примере пароля « Волга» .

В программе на Бейсике для этого может быть применена функция INPUT$. Она имеет синтаксис:

INPUT$ (п) ,

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

Соответствующий фрагмент программы тогда может иметь вид:

CLS

DO

PRINT ” Введите пароль pass$

ХЕ pass$ <> ” Волга ” THEN

PRINT ” Неправильный пароль ! ”

END IF

           ПОР tJNTIL pass$           ” Волга ”

CLS

LOCATE 13, 27

PRINT ” Добро пожаловать в программу ! ”

REM Приостановка программы

REM до нажатия любой клавиши

DO пор UNTIL ШГЧКЕУ$ о REM Продолжение программы

Здесь величина pass$ принимает значение, введенное пользователем, а в случае ввода неправильного пароля на экран выдается соответствующее сообщение и вновь предлагается ввести пароль (используется оператор цикла с постусловием).

!

В программе на Паскале для «скрытия» пароля может использоваться функция Readkey. Она приостанавливает работу программы, пока не будет нажата какая-либо клавиша, и возвращает ее символ, поэтому в программе эта функция вызывается 5 раз (в теле оператора цикла с параметром):

Uses CRT;

Var pass : string [5) ; 1: byte; s : char;

BEGIN C1rscr;

Repeat pass

Write ( ' Введите пароль

              For i          1 то 5 Do

Begin

{ Читаем очередной символ) Readkey;

{Добавляем его к уже введенным ранее} pass pass + s

End;

If pass <> ' Волга ' Then

Write1n ( ' Неправильный пароль

        Until pass    ' Волга ' ,

C1rscr;

Write1n;

Gotoxy (27 , 13) ,

Write ( ' Добро пожаловать в программу { Приостановка программы до нажатия любой клавиши ) Repeat

Until keyPressed;

{ Продолжение программы)

Здесь тоже используется оператор цикла с постусловием при вводе неправильного пароля на экран выводится соответствующее сообщение и вновь предлагается ввести пароль.

В заключение заметим, что, конечно, ваша программа обязательно должна быть откомпилирована (переведена с языка программирования высокого уровня на машинный язык), поскольку в ее исходном тексте (в файле типа *.bas или *.pas) любой посторонний может найти требуемый пароль.

Задание

Измените приведенную выше программу (на языке программирования, с которым вы знакомы) так, чтобы количество попыток для ввода пароля было ограничено (например, чтобы программа допускала три таких попытки).

9.3, Каким днем недели был день вашего рождения

Разработаем программу, с помощью которой можно определить, каким днем недели (понедельник, вторник и т. д.) была или будет некоторая дата. При этом мы будем использовать так называемый «школьный алгоритмический язык». Русский синтаксис этого языка делает программы максимально понятными, так что вы легко сможете разработать аналогичные программы на любом известном вам языке программирования.

Обозначим величины, соответствующие заданной дате, как день, месяц и год. Введем также следующие обозначения:

1)                       прив месяц — «приведенный» номер месяца, определяемый как (месяц — 2), если месяц > 2, или месяц + 10, если месяц < 2; т. е. прив месяц = 1 соответствует марту, прив месяц = 2 — апрелю и т. д., а январь и февраль считаются 11-м и 12-м месяцами «предыдущего» года;

2)                       прив_гоД «приведенный» номер года, рассчитываемый как год, если месяц > 2, или (год — 1), если месяц 2;

З) число100 — полное число столетий, прошедших к заданной дате;

4) год века — номер года в заданной дате в пределах текущего столетия.

Например, для 12 апреля 1961 г., когда был осуществлен полет первого космонавта Земли Ю. А. Гагарина в космос, значения указанных переменных будут следующими: ДеНЬ = 12, месяц = 4, год = 1961, прив месяц = 2, прив_гоД = 1961, число1ОО = 19; год века = 61.

Закодируем дни недели при помощи чисел следующим образом: О — воскресенье, 1 — понедельник, 2 — вторник 6 — суббота. В книге [18] показано, что номер дня недели (в соответствии с этой «кодировкой») определяется как остаток от деления на 7 числа N, равного:

лт = День + [(13 • прив месяц — 1)/5] + год века +

+ [год века /4] + [число1ОО/4] — 2 • число1ОО,

где квадратные скобки обозначают взятие целой части числа.

С учетом всего сказанного выше, требуемая нам программа на школьном алгоритмическом языке может быть оформлена так:

алг Определение дня недели по дате нач цел день, месяц, год, ПРИВ месяц, прив год, число 1 00, год века, N, номер дня недели, лит название дня Ввод исходных данных вывод нс, ” введите номер дня ”

ввод день вывод нс, ” Введите номер месяца “

ввод месяц вывод нс, ” Введите номер года ” ввод год

Определение значений вспомогательных величин если месяц > 2

           прив месяцме сяц       2

ПРИВ месяцме СЯЦ + 10

если месяц > 2

ПРИВ ГОДгод

         прив год— год      1

число 1 0 0div (прив год, 100) год векаmod (прив год, 100) Расчет числа N день + div ( (13 * ПРИВ месяц 1 ) , 5) + год века +

(год века, 4) + div (число 100, 4)  2 * число 1 00

Определение номера дня недели номер дня недели mod (N, 7)

Определение названия дня недели

при номер дня недели     0 : название дня” воскресенье“ при номер дня недели — 1 : название дня” понедельник ”

          при номер дня недели — 6 : название дня         ” суббота ”

Вывод ответа вывод нс, ” Введенной Вами дате соответствует

название дня кон

5—1523

Здесь div — функция, возвращающая целую часть частного от деления первого ее аргумента на второй, а mod — функция, определяющая остаток (в других языках программирования используются не функции, а соответствующие операции).

Задание

Напишите программу на известном вам языке программирования и с ее помощью определите, каким днем недели был день вашего рождения.

9,4, «Звездное небо»

Рассмотрим программу, которую можно назвать «Звездное небо» . В ней на экран многократно выводится символ «*» , а место его вывода и цвет выбираются случайно.

На школьном алгоритмическом языке такая программа выглядит следующим образом:

алг Звездное небо нач цел х, у, цвет Очистка Экрана нц 50000 раз

1 + rnd (Мах У) х 1 + rnd (МахХ) цвет rnd(16) МестоВывода (х, У) Цвет Текста (цвет) вывод Пауза кон

Здесь:

*    Очистка Экрана процедура очистки экрана;  х и у — номера позиции (столбца) и строки, в которых будет выводиться очередной символ «*» ;

*    МахХ, МахУ — максимально возможные значения х и у;  цвет — номер цвета, которым будет выводиться очередной СИМВОЛ « * » ;

*    МестоВывода — оператор установки места вывода на экран;  цветТекста — оператор установки цвета текста, выводимого на экран.

Именем Пауза обозначен фрагмент программы, обеспечивающий некоторую паузу при выводе на экран очередного символа (это может быть стандартная процедура, имеющаяся в языке про-

граммирования и решающая указанную задачу, либо так называемый «пустой цикл»).

Задание

Самостоятельно разработайте вариант программы, в котором не будет происходить так называемая «прокрутка экрана» (которая имеет место при х = МахХ и у = МахУ).

9.5. Проверка скорости реакции человека

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

*     п — количество попыток;

*     старт — момент времени, когда на экране появляется надпись «Старт!» ; он характеризуется значением, которое возвращает функция время — количество сотых долей секунды, прошедших с начала суток;

*     финиш — момент времени, когда участник нажимает клавишу; здесь также можно применить функцию время;

*     время_реакции — промежуток времени между двумя указанными выше моментами;

*     общее время — сумма значений время_реакции для всех попыток.

Кроме того, в программе промежуток времени до появления на экране очередной надписи «Старт!» задается случайным образом, а для проверки факта нажатия клавиши применяется функция inkey (аналогичная функция имеется и в других языках программирования).

алг Определение времени реакции нач цел п, старт, финиш, i, 5, К, вещ время реа кции, общее_время вывод нс, ” Задайте КОЛИЧеСТВО ПОПЫТОК“ ввод п общее время нц для -i от 1 до п

' Пауза разной продолжительности

нц для ј от 1 до 10 нц для К от 1 до int (rnd (30000) )

кц вывод нс, ”Старт . старт          время ждем нажатия любой клавиши

кц при inkey финиш время время реакции    ( финиш — старт) / 100 общее время — общее время + время реакции

вывод нс, ” Среднее время реакции: вывод общее_время/п, сек ” кон

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

общее время

нц для -i от 1 до п если inkey <> то Клавиша нажата раньше времени штраф : = штраф + 0 .2 все

Пауза разной продолжительности

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


 

133

Вывод же результатов «испытаний» тогда может быть оформлен следующим образом:

общее время общее время + время реакции вывод” Среднее время реакции: вывод общее время/ п, сек“ вывод нс, ” Штраф: штраф, сек ” вывод” Среднее время реакции с учетом ' штрафа ' вывод общее время/п + штраф, сек ” кон

Можно усовершенствовать программу вместо слова «Старт!» выводить на экран одну из цифр: О, 1 9, а «испытуемый» тогда должен нажать соответствующую клавишу. Какие изменения необходимо внести в программу в этом случае кроме описания новых величин (цифра — число, появляющееся на экране, и с — символ, который нажмет «испытуемый»)? Таких изменений — два:

1)                       при каждой попытке необходимо случайным образом выбрать цифру и вывести ее на экран;

2)                      


вместо функции inkey надо использовать функцию getkey — это позволит определить, нажал ли «испытуемый» соответствующую клавишу (проверив код нажатой клавиши).

Измененный фрагмент листинга (вместо фрагмента, начинающегося с оператора, который выводит на экран слово «Старт!» ) имеет вид:

цифра  rnd(10) вывод нс, цифра

         старт        в емя

            С       getkey

           КЦ при цел (с)          48 = цифра

Далее текст программы остается без изменений финиш . время

Здесь функция цел возвращает ASCII-k0lk символа, являющегося ее аргументом, а 48 — это ASCII-k0!k цифры О.

Задание

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

134

9.6. Биологические ритмы

В жизни человека бывают дни творческие и бесплодные, счастливые и несчастливые, дни, когда он бывает в приподнятом или в подавленном настроении. Замечено, что возможности нашего организма изменяются периодически: по прошествии определенного числа дней (периода) организм возвращается в то же самое состояние. Часто биологические ритмы вычисляют, основываясь на гипотезе, что существует три цикла: физический (его период равен 23 дням), эмоциональный (период — 28 дней) и интеллектуальный (период — 33 дня). Кривые таких биологических ритмов могут быть представлены в виде синусоид (рис. 9.1), где начало всех трех кривых соответствует дню рождения. В первой половине каждого периода значения синусоид положительны это дни рабочего, приподнятого настроения, а вот во второй части периода (когда значения какой-либо синусоиды отрицательны) человек находится в пассивном, плохом настроении. В самом начале (сразу после дня рождения) все биологические ритмы попадают в положительную часть периодов.

 

Положительная сторона физический эмоциональный интеллектуальный

                                                          23        28        33

 

Отрицательная сторона

х

Рис. 9.1

Действительно ли циклы биологических ритмов бывают та-

кими и одинаково ли они подходят для каждого человека, пока окончательно не установлено. Несмотря на это, разработаем программу, которая будет печатать календарь на один месяц биологических ритмов для пользователя с заданной датой рождения.

Прежде всего надо вычислить количество дней, прошедших со дня рождения человека до начала рассматриваемого месяца. Нетрудно убедиться, что это значение равно сумме четырех величин:

1)                    количества дней, прошедших от дня рождения до конца месяца рождения (назовем эту величину Д1);

2)                    количества дней, прошедших с начала месяца, следующего за месяцем рождения, до конца года, в котором человек родился (Д2);

З) количества дней, прошедших с начала года, следующего за годом рождения, до начала года, для которого строится календарь (ДЗ);

4) количества дней, прошедших с начала года до начала месяца, для которого строится календарь (И).

Ясно, что при таких расчетах нам придется часто определять количество дней в том или ином месяце года. Для этого удобно предусмотреть следующую функцию:

алг цел Число дней в месяце (арг цел нм, нг) нач

1 или нмЗ или нм = 5 или нм7 или нм8 или нм10 или нм = 12 :

                          31                       Значение функции

4 или нм6 или нм = 9 или нм11 :

иначе месяц  февраль если mod (нг, 4) год високосный

29

28

кон

Аргументы этой функции — номер месяца нм и номер года на Строго говоря, проверка факта, является ли год, для которого функция возвращает значение, високосным, здесь проведена не совсем правильно. Как известно, год является високосным, если его номер делится на 4, но последний год любого столетия считается високосным только в том случае, если его номер делится на 400 (например, это годы 1600-й и 2000-й), а 1900-й и 2100-й годы — не високосные (см. 18.7). Однако учитывая, что мы будем оперировать периодом времени на границе ХХ и XXI вв., и принимая во внимание, что 2000-й год является високосным, мы вполне можем для простоты использовать приведенное условие («величина нг кратна четырем»).

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


иды) — либо «положительными» («благоприятными»), либо «отрицательными» («неблагоприятными»). Распределение циклов по таким дням показано в табл. 9.1.

Таблица 9.1

Вид цикла

Номер дня цикла

 

«Нейтральные» дни

« Благоприятные» дни

«Неблагоприятные » дни

Физический

1-2, 10-14, 22-23

3-9

15-21

Эмоциональный

1-3, 12-17, 26-28

4-11

18-25

Интеллектуальный

1—3, 14—20, 31—33

4—13

21-30

Перейдем теперь к разработке самой программы. Исходными величинами в ней являются:

    Др, мр и гр — соответственно день, месяц и год рождения человека, для которого строится календарь биоритмов;  месяц и год соответственно месяц и год, для которых строится календарь.

Вспомогательные величины:

   


Д1, Д2, ТЗ, Д4 — были описаны выше;  д общее сумма указанных значений (смысл величины д общее также описан выше);  тек месяц, тек год — соответственно месяц и год, для которых рассчитываются значения Д2, ДЗ, до,

    д физ, д эм, д инт — номер дня в каждом из трех циклов, которому соответствует тот или иной день исследуемого месяца.

Если какой-то день оказывается «благоприятным», в календаре мы будем отмечать его знаком «+» , «неблагоприятные» дни будем отмечать знаком «—», а «нейтральные» — символом «О». Вся программа тогда имеет вид:

алг Биоритмы нач цел ДР, мр, ГР, месяц, год, д], д2, д З, да, д общее, тек месяц, тек год, 1, д физ, д эм, д инт

Задаем исходные данные вывод нс, Задайте день, номер месяца и вывод ” номер года Вашего рождения ” ввод ДР, мр, гр вывод нс, “ Задайте год и номер месяца, вывод ”для которого определяются биоритмы“ ввод год, месяц

” Календарь биоритмов на указанный месяц“

Физическое состояние

” Физическое состояние :

нц для -i от д общее + 1 до д общее +

Число дней в месяце (месяц, год) mod(i, 23)

Учитываем табл. 9 . 1 если д физ 0 и д физ <= 2 или д физ 22 или д физ >= 10 и д физ <=

Нейтральный день вывод ” 0”

если д физ >= З и д физ <= 9 то Благоприятный день

ВЫВОД иначе

Неблагоприятный день вывод

Эмоциональное состояние вывод нс, ” Эмоциональное состояние : вывод нс нц для i от д общее + 1 до д общее +

Число дней в месяце (месяц, год)


mod (i , 28)

Учитываем табл. 9 . 1 д эм 0 и д эм <= З или д эм или д эм >= 12 и д эм 17

Нейтральный день вывод ” 0'

если д эм >= 4 и д эм <= 11 то Благоприятный день

ВЫВОД иначе

Неблагоприятный день вывод


                                                                                                  26 или д эм         27

Интеллекутальное состояние вывод нс, ” Интеллектуальное состояние :

-i от д общее + 1 до д общее +

Число дней в месяце (месяц, год) mod (1, 33)

Учитываем табл. 9.1 д инт >= 0 и д инт    З или д инт 31 или д инт        32 или д ИНТ >= 14 и д инт <= 20 то Нейтральное состояние вывод ” 0”

если д инт >= 4 и д инт <= 13 то Благоприятный день вывод иначе

Неблагоприятный день вывод

кон

Задание

Разработайте соответствующую программу на известном вам языке программирования. Дополните ее фрагментом, в котором определяются и выводятся на экран «суперблагоприятные» дни (когда по всем трем показателям состояние человека положительное) и «супернеблагоприятные» дни (когда все показатели — отрицательные).

9.7. Обмен значениями между переменными

Рассмотрим задачу, которая часто встречается при разработке различных программ. Даны значения двух переменных величин а и Ь. Требуется произвести обмен их значений.

Очевидно, что решение, что называется, «в лоб»:

или

требуемого результата не дает. (Самостоятельно ответьте на вопрос: почему?) Как же быть? А так, как мы меняем местами содержимое двух чашек, в одной из которых находится молоко, а в другой — чай. Нужна третья чашка! То есть в нашей задаче для ее решения потребуется третья, вспомогательная, переменная. Тогда обмен значений переменных а и Ь может быть произведен так:

с

а

Запоминаем значение величины а

Ь

Величине а присваиваем значение величины Ь

Ь

с

Величине Ь присваиваем ” старое ” значение

в е ли ч и н ы а

или

с

Но оказывается, что обменять значения двух переменных можно и без использования вспомогательной переменной. Не может быть! — скажете вы. Может! — и сделать это можно даже несколькими способами. Вот один из них:


Красиво, не правда ли? С молоком так не сделаешь! Остальные способы решения (а их, по крайней мере, еще 7) найдите самостоятельно. А заодно решите следующую задачу. Даны значения трех переменных величин а, Ь и с. Требуется составить программу, после выполнения которой величина Ь будет иметь значение величины а, величина с — значение величины Ь, величина а — значение величины с. Дополнительные переменные использовать нельзя. Интересно, сколько способов решения этой задачи вы найдете?

9.8. Рекурсия

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

Барон Мюнхгаузен В программировании широко используется прием, называемый рекурсией (от латинского recursio — «возвращение»). Так называют ситуацию в программе, когда какая-либо процедура или

Можно, конечно, при этом использовать и две дополнительные чашки, но это уже излишество .

Надеюсь, вам известен этот персонаж?

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


В некий день один поэт с мозгами набекрень поэму сел писать, начавши: «В некий День один поэт с мозгами набекрень поэму сел писать, начавши: «В некий день

Рис. 9.2. «Рисующие руки»

Рис. 9.3. Мальчик с зеркалом

(литография М. Эшера, 1948 г.)

Для примера опишем функцию с рекурсией (такие функции называются рекурсивными) для расчета факториала натурального числа п (факториал числа п, обозначаемый как п!, равен 1 • 2 • З х х . . . • п). Такую функцию можно создать, зная, что п! = (п 1)! • п. алг цел Факториал (арг цел п) нач знач  Факториал (п       1)      п Рекурсивный вызов функции Факториал кон

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

А читателям, не имеющим такого опыта, предлагается подумать, в чем заключается ошибочность приведенного варианта.

алг цел Факториал (арг цел п) нач если п > 1 то

Рекурсивный вызов функции Факториал знач   Факториал (п иначе знач 1

кон

На основе этого примера сформулируем важное правило: необходимо так оформлять процедуры (функции) с рекурсией, чтобы рекурсивные вызовы осуществлялись по условию, которое в какой-то момент станет ложным.

Задания

1. 


Составьте программу, в результате выполнения которой на экран 10 раз выводится текст всем известной истории о попе и его собаке («У попа была собака... В программе должна использоваться рекурсивная процедура, обеспечивающая вывод этого текста любое заданное число раз.

Указания по выполнению. Чтобы наблюдать вывод каждой новой истории, предусмотрите в процедуре небольшую паузу в выполнении программы.

2.  Разработайте рекурсивную функцию для расчета значения а для заданных значений а и п (п — вещественное число, п — натуральное).

З. Разработайте рекурсивную функцию для расчета К-го члена последовательности Фибоначчи (последовательность Фибоначчи образуют числа 1, 1, 2, З, 5, 8, 13,

Познакомился «интернетчик» с девушкой. Погуляли. Он спрашивает:

— Как бы нам еще встретиться?

Она ему на бумажке телефон написала и уехала. Он смотрит на бумажку: «Странно... на ICQ не похоже...

На 1Р-адрес тоже...»

Так и не состоялась любовь...


10 Ваш помощник — калькулятор

сегодня калькулятор можно найти в портфеле почти каждого школьника (в том числе это и встроенные калькуляторы в сотовых телефонах и даже в наручных часах). А представьте себе в своем портфеле калькулятор весом более 10 кг и размером в несколько десятков сантиметров. Именно такими были самые первые калькуляторы, причем на них можно было производить только четыре арифметических действия.

Первый в мире полностью электронный калькулятор «Anita МК 8» был продемонстрирован в 1961 г. на выставке промышленных достижений в Англии. По окончании этой выставки в СССР было принято решение о создании аналогичного отечественного калькулятора. Начиная с 1961 г., группа научных сотрудников Ленинградского отделения Центрального экономико-математического института Академии наук СССР — В. Б. Мараховский, Е. А. Каневский и Г. И. Мендерская — разрабатывала первый советский электронный калькулятор, который получил название «Вега» (рис. 10.1). В ноябре 1962 г. этот калькулятор заработал. На испытания Государственной комиссии были представлены три одновременно созданных калькулятора под названиями «Вега», «Лада» и «Вятка-Э». На проведенных испытаниях победила «Вега», которую и решено было производить серийно.

Рис. 10.1

10.1. Вычисление процентов

Почти на всех калькуляторах есть клавиша «94 ». С ее помощью можно проводить вычисление процентов от числа, а также вычислять процентные увеличения и уменьшения. Прежде чем описывать методику проведения таких вычислений, заметим, что на вашем калькуляторе она может несколько отличаться от указанной ниже.

1.                Для вычисления процентов от какого-либо числа нужно ввести это число в калькулятор, умножить его на искомое количество процентов и нажать клавишу « % » :

2.               


Увеличение числа (например, 15) на 10 0/0 :

 :Б . Б

З. Уменьшение числа (например, 15) на 10 0/0 :

4. Нахождение числа по заданному проценту (например, числа N, если известно, что число 12 составляет 8 0/0 от этого числа):

5. Чтобы определить, сколько процентов от числа А составляет число В, необходимо ввести в калькулятор число А, разделить его на число В и нажать клавишу«% » . Аналогично можно перевести в проценты и простую дробь (тогда роль числа А играет числитель дроби, а числа В — ее знаменатель):

Задания

1.  1500 жителей острова Бригг решили переехать на другой остров. Определите:

1.1)  общую численность населения острова Бригг, если указанное количество жителей составляет 20 0/0 от общего числа жителей;

1.2)  сколько жителей останется на этом острове после переезда.

2.  Некто выиграл в лотерею. Свой выигрыш он может получить любым из двух способов:

   получить в первый год 1000 рублей; на следующий год — на 10 0/0 меньше; на следующий — еще на 10 0/0 меньше и т. д., всего — в течение 10 лет;

   получить в первый год 150 рублей; на следующий год — на 50 0/0 больше; на следующий — еще на 50 0/0 больше и т. д., всего — в течение 10 лет. Какой способ выгоднее?


З. Исследуйте особенности использования клавиши « 0/0 » в программе Калькулятор — стандартном приложении операционной системы Windows.

10.2, Память калькулятора

При расчетах на калькуляторе часто приходится запоминать или записывать промежуточные результаты, чтобы использовать их в дальнейших вычислениях. У большинства калькуляторов для этого имеется специальное запоминающее устройство — регистр памяти, в котором можно хранить различные числа. Операции с регистром памяти производятся, как правило, с помощью следующих клавиш:

*           в регистр памяти вводится число, отображаемое в данный момент на индикаторе калькулятора; если в памяти уже было какое-то число, то новое прибавляется к нему;

 число, отображаемое на индикаторе калькулятора, вычитается из числа, уже хранящегося в регистре памяти;

*           («Memory Recall» — «из памяти») — число, хранящееся в регистре памяти, высвечивается на индикаторе калькулятора. Если перед этим была нажата клавиша какоголибо действия, то число из памяти станет вторым операндом для этого действия (результат вычисляется при нажатии клавиши «—»);

мс

клавиша сброса (стирания) числа из регистра памяти («Memory Clear»). У некоторых калькуляторов ее нет, а чтобы очистить регистр памяти, нажимают последовательно клавиши «MR» и «М—». Иногда клавиши «MR» и «МС» объединены в одну, тогда на ней написано «М—» .

Первое нажатие на эту клавишу соответствует нажатию на «MR» , второе — на «МС» .

Прежде чем предлагать вам задачи, дам несколько рекомендаций по проведению расчетов с использованием регистра памяти калькулятора.

1.Помните, что в регистре памяти может храниться только одно число, поэтому тщательно продумывайте последовательность своих действий.

2.При вычислении дробей со сложными выражениями в числителе и знаменателе сначала вычисляют знаменатель и вводят результат в регистр памяти. Затем рассчитывают числитель и делят полученный результат на число, хранящееся в памяти.

З. Перед началом новых вычислений регистр памяти калькулятора надо обязательно очистить от старых значений.


Задания

3,4 + 25,9 1. Вычислите на калькуляторе значение выражения:

10,5-6,1

2. Получите таблицу умножения на 16 (внеся число 16 в регистр памяти):

1 х 16 2 х 16 -

10 х 16 -

З. Вычислите значение выражения: 93, 1 — (4,3 х 6,8) — (15,2 — 3,4).

4. Что лучше занести в регистр памяти при решении следующих групп примеров:

12 х 9 + 3 _

123 Х

1234 х 9 + 5 =

6) 143 х 2

14 з 3

14 з

14 з

143 х

5.   Переведите в мили расстояния: 85 км; 100 км; 115 км; 32 км; 270 км, если 1 километр = 5/8 мили.

6.   Задача «Турпоход». Предположим, что вы идете в туристический поход. Ваш рюкзак вместе с палаткой и спальным мешком весит 6,75 кг. Еще вам нужно положить в рюкзак: спиртовку, кружку и ложку (все вместе весит 2 кг), два пакета с рисом (по 430 г каждый), семь пакетов суповых концентратов (по 85 г каждый), три пачки чая (по 113 г каждая) и пять пакетиков с сухим молоком (по 21 г каждый). Еще нужно взять с собой шоколад. Каждая плитка весит 103 г. С помощью калькулятора, не записывая результаты промежуточных вычислений на бумаге, определите, сколько плиток шоколада вы можете взять с собой, если общий вес рюкзака не должен быть больше 12 кг.

7.   Исследуйте особенности использования клавиш для работы с регистром памяти в программе Калькулятор — стандартном приложении операционной системы Windows.

10.3. Автоматическая память


Многие калькуляторы, даже простые, кроме регистра памяти, куда число заносится при нажатии специальной клавиши, снабжены памятью иного рода, которая называется автоматической (или константной). Эта память позволяет повторить последнее выполненное в результате нажатия клавиши «=» действие, а для использования содержимого этой памяти не нужно нажимать на какую-то специальную клавишу. Чтобы узнать, обеспечивает ли ваш калькулятор возможность использования автоматической памяти, выполните следующие действия:

1)  введите, например, число 11;

2)  нажмите клавишу «+»;

З) несколько раз нажмите клавишу «=» .

Если при каждом нажатии на клавишу «=» изображенное на индикаторе число будет увеличиваться на 11, то в вашем калькуляторе встроенная автоматическая память есть!

В большинстве калькуляторов константой (числом, занесенным в автоматическую память) становится: при делении — делитель; при вычитании — вычитаемое; при сложении — второе слагаемое; при умножении — второй множитель. Скажем, если необходимо вычесть 38 из чисел 81, 113, 225 и 1200, то после нажатия клавиш

значение —38 «отправляется на хранение» в константную память, после чего для вычитания 38 из других чисел после ввода каждого из них достаточно нажимать на клавишу «=» .

Использовать константу можно до тех пор, пока не будет очищен индикатор калькулятора или пока в автоматическую память не будет занесено другое число.

Если после выполнения повторяющихся действий вам необходимо сделать что-то другое с числом, изображенным на индикаторе, то надо просто нажать клавишу требуемого арифметического действия, как будто это число только что введено.

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

zoo


 3

Если на вашем калькуляторе нет клавиши «К», то для выполнения операций с константой попробуйте дважды нажать на клавишу операции, как показано ниже:

Если же ничего не получается, то ознакомьтесь с руководством по эксплуатации вашего калькулятора и узнайте, как на нем нужно работать с константой (и обеспечивается ли работа с ней) е.

Задания

1.  Вычислите значения выражений:

1235 + 1235 -

12355 + 1235 + 1235

1235 + 1235 + 1235 + 1235 -

1235 + 1235 + 1235 + 1235 + 1235 -

Примечание. Операцию умножения использовать нельзя.

Все эти задания надо выполнить на калькуляторе, используя автоматическую память.

2.  Вычислите первый, второй, третий десятый члены прогрессий:

1)  арифметической, в которой первый член и разность соответственно равны 10,7 и 2,7;

2)  геометрической, в которой первый член и знаменатель соответственно равны 1,8 и 2,1;

З) арифметической, в которой первый член и разность соответственно равны 128,5 и 12,1;

4) геометрической, в которой первый член и знаменатель соответственно равны 431,8 и 1/3.

З. Вычислите значения 2 10 и 220

4. Когда растение посадили в горшок, его высота от поверхности земли в горшке составляла 1 см. Какова будет высота растения через 7 дней, если за один день она удваивается?

В заключение дам полезный совет по использованию константной памяти. Если вам нужно пересчитать много различных предметов, то для этого удобно ввести в калькулятор операцию «+ 1» (нажав клавиши «+» и «1»), а затем для каждого предмета нажимаТЬ КЛ аВИШУ «


10.4. Использование клавиши обратного числа

Как вы, конечно, знаете, в математике результат деления единицы на какое-либо число называют обратным числом. Например, числом, обратным к 2, является 0,5.

1 / х

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

Нажав указанные клавиши, вы можете проверить, как работает ваш калькулятор: если получилось значение 0,5, то автоматическая константа вашего калькулятора дает обратное число, а если 1, то автоматическая константа дает не обратное число, а всего лишь результат деления числа на него самого.

Задания

1.  Интересно, что все числа, обратные 11 и числам, кратным 11 (22, 33 и др.), содержат две повторяющиеся цифры. Правда, из этого правила есть несколько исключений. Используя калькулятор, найдите такие числа, не превышающие 220.

2.  Возможность определения обратного числа позволяет оптимизировать расчеты на калькуляторе выражений вида

7

Предложите алгоритм расчета значения  с минималь+2,5 но возможным количеством нажатий клавиш. При этом вычислять знаменатель дроби без калькулятора нельзя.

10.5, Калькулятор-«переводчик»

Если вычислить на калькуляторе выражение

170. 123 2 -122 .91 +84,


то получится число 7734. Если теперь перевернуть калькулятор «вверх ногами» (на 180 0 ), то можно увидеть символы, похожие по начертанию на латинские буквы Н, Е, 1, и (немецкое слово «hell» означает «светлый», «ясный», а английское «hell», наоборот, означает «ад», «преисподняя»). Для различных десятичных цифр такое соответствие между ними и буквами показано на рис. 10.2.

 З ч

 Z Е

Рис. 10.2

Задания

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

1. На английском языке:


1.1)            152 2 +302 2 -8 2 ;

1.2)            31 2 -19 2 + 259,2-1.25•,

12345

1.3)                +2 • +26 2 —2 3 ;

6,25

4) (85,2 • 45,5 + 1 : 2,5) • 1,85 - 1289 : 20

1.5) (458 • 0,85 + 0,7) • 1,5 + 31,2 • 2,5;

1.6) 0,875 400 + 0,35 • 760;

1.7) (222 • 355 + 1190) • 4,5 + 25,6 • 649,0625;

1.8) 16 3              3 5 - 3;

22 368 130,9

1.9)

0,16 0,64


1.10) (544 • 6,25 +56,5 • 32) • 6,75 -

      1.11) (8,125 4,4 +              + 298,4 16,25 + 116 10,25;

1.12)

2.   На немецком языке:

2.1)        153 2 + 155 2 + 1572 + 17 • 103;

2.2)        1248 • 84,21 - 1 : 12,5 - 171 2 - 2 11       1;

2.3)        2 2 3 2 (33 2            2 • 5 2);

2.4)        (35 + 55 + 75) : 3,75 +     • 1172;

2.5)        12,5 • (1 : 3,125 +   464);

2.6)        6,25 (4,4 • 15 2 - 3 • 143,12);

2.7)        (1 : 0,03125 + 1 : 0,008) • 14, 85 + 5 • (31 2 - 0,72 );

2.8)       


876 2 +79 2 +19 2            20164;

2.9)        26 .( 240100 + 242064 + 246016 + 248004);

2.10)   ((101 : 0,015625 - 3) • 9 + 0,76) • 6,25;

2.11)   33 3 +14 2 +

2.12)   11 3 + 3,5 3 + 33 • 0,125.

З. На французском языке:

3.1)       29,1300+

3.2)       7 3 + 84,5 -52

3.3)       6,2 • 7 2 + 4,96 • 1,25;

2 3 • (54,5 • 28 - 555 • 1,6) + 4;

3.5)       15 2 + 16 2 + 17 2 - 108,5 : 1,75;

3.6)       18,75 • 2 11 - 0,75 • 2 5 ;

3.7)        +1,83-        -2,5921;

3.8)       151,3 • 673,4 + 21 2 • 252 + 12,5 • 64,2864;

3.9)       7,1 3 + 3 4,363;

3.10)  23 • (11 2 13 + 6).

Примечание. В некоторых случаях следует рассматривать целую часть от полученного результата.

10.6. Фокус с датой рождения

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

Попросите кого-нибудь из своих друзей или знакомых ввести в калькулятор число, соответствующее дате его рождения. Допустим, он родился 7 сентября 1995 г. Значит, будет введено число 7. Затем предложите ему умножить это число на 20, прибавить к результату З, а полученную сумму умножить на 5. Затем попросите его прибавить к результату число, обозначающее месяц, в котором он родился, и снова умножить полученную сумму на 20, прибавить к результату З и умножить на 5. В заключение попросите его прибавить к полученному результату число, состоящее из двух последних цифр года, в котором он родился.


Теперь возьмите этот калькулятор и вычтите из числа, показанного на индикаторе, значение 1515. Тогда полученное число и будет день, месяц и год рождения вашего друга, если читать его слева направо (если все сделано правильно, то в приведенном выше примере должно получиться число 70995). (Компьютерная программа для демонстрации этого фокуса описана в главе 11.)

на случай, если захочет


Компьютерные фокусы

хотите стать фокусником и удивить своих товарищей демонстрацией компьютерных фокусов? Тогда эта глава — для вас 9.

11.1. Компьютер отгадывает день рождения

В этом компьютерном фокусе задача — «отгадать» день рождения любого человека, который отвечает на вопросы, задаваемые ему при выполнении программы. Соответствующая программа на школьном алгоритмическом языке имеет вид:

алг Отгадывание дня рождения нач цел день, произведение, частное вывод нс, ” Сейчас я отгадаю день Вашего рождения ” приостановка программы до нажатия любой клавиши

кц при inkey() <> вывод нс, ” Умножьте день своего рождения на 3”

Приостановка программы до нажатия любой клавиши

вывод нс, ” Полученное произведение разделите нацело на 9” вывод нс, “ и запомните или запищите частное и остаток“

Приостановка программы до нажатия любой клавиши

вывод нс, ” Частное умножьте на 3”

Приостановка программы до нажатия любой клавиши

вывод нс, ” Сколько получилось э ввод произведение вывод нс, ” Остаток разделите на 3”

Приостановка программы до нажатия любой клавиши

вывод нс, ” Сколько получилось ? ” ввод частное день произведение + частное

ОчисткаЭкрана вывод нс, “ вы родились ” день , ” -го числа ” кон

(Здесь Очистка Экрана — это стандартная процедура очистки экрана.)


Для приостановки программы до нажатия любой клавиши в программах на других языках программирования можно использовать оператор цикла с постусловием:

на Паскале:

Repeat

Until keyPressed; на Бейсике:

DO

ТОР UNTIL П4КЕУ$

11.2. Компьютер отгадывает дату рождения

Программа, представленная ниже, «отгадывает» не только день, но также и месяц и год рождения человека. (Суть этого фокуса описана в задаче 10.6 «Фокус с датой рождения» в главе 10.)

алг Отгадывание даты рождения

Наха цел результат, день, месяц, год, разность, год рожд, лит название месяца вывод нс, ” Сейчас я отгадаю дату вывод ” (день, месяц и год) Вашего рождения ”

Приостановка программы до нажатия любой клавиши

кц при inkey() <>

вывод нс, ” Умножьте день своего рождения на 20”

Приостановка программы до нажатия любой клавиши

вывод нс, ” К полученному произведению прибавьте 3”

Приостановка программы до нажатия любой клавиши

вывод нс, ” Сумму умножьте на 5“

Приостановка программы до нажатия любой клавиши

вывод нс, ” К полученному произведению прибавьте вывод нс, ” номер месяца, в котором Вы родились ”

Приостановка программы до нажатия любой клавиши

вывод нс, ” Умножьте полученное число на 20”

Приостановка программы до нажатия любой клавиши

вывод нс, ” К полученному произведению прибавьте 3”

Приостановка программы до нажатия любой клавиши


вывод нс, ' Сумму умножьте на 5”

Приостановка программы до нажатия любой клавиши

нс, ” К полученному произведению прибавьте

' число, образованное двумя последними цифрами

” года, в котором Вы родились нс, ”Сколько получилось?“ ввод результат разность    результат  1515 div (разность, 10000) div (mod (разность, 10000) , 100) mod (разность, 100)

Определяем название месяца

при месяц    1 : название месяцаянваря при месяц — 2 : название месяцафевраля

        при месяц         12 : название месяцадекабря

Определяем 4-значное значение года рождения год рожд 1900 + год

Считаем, что человек родился в ХХ веке

” вы родились год рожд, года ” кон

(ОчисткаЭкрана — стандартная процедура очистки экрана.)

11.3. Компьютерные фокусы на отгадывание чисел

11.31. Фокус № 1

Предложите кому-нибудь задумать число, прибавить к нему З, умножить полученную сумму на 6, вычесть из этого произведения задуманное число, затем вычесть еще 8 и, наконец, разделить все это на 5. После этого компьютер легко определит задуманное число.

Соответствующая программа:

алг Фокус 1 нач цел х, п вывод нс, ” Задумайте целое число, которое я отгадаю“

Приостановка программы до нажатия любой клавиши

кц при inkey() вывод нс, ” Прибавьте к нему 3” далее фрагмент программы, относящийся к ее приостановке, будет показан в виде многоточия

вывод нс, ” Полученную сумму умножьте на 6”

вывод нс, ” Из полученного произведения вычтите задуманное число“

вывод нс, ” Из результата вычтите число 8”

вывод нс, ” И, наконец, разделите все это на 5”

вывод нс, ” Сколько получилось ? ”

Можно воспользоваться калькулятором.

вывод нс, ” Введем полученный результат ”

ввод п х        п          2 Очистка Экрана вывод нс, ” Вы задумали число ” х

КОН

Этот фокус можно демонстрировать и без использования компьютера. Когда ваш товарищ назовет полученный результат

(п), вы можете сразу же назвать задуманное им число (оно равно

Конечно, уже после нескольких демонстраций этого фокуса вас могут «раскусить» (или «расфокусить» 9) — слишком уж очевиден его секрет. При демонстрации же следующего фокуса это сделать труднее...

11.3.2. Фокус № 2 алг Фокус 2


нс, ” Задумайте два целых числа (каждое ” не более 99) , которые я отгадаю“ Ожидание нажатия клавиши нс, ” Первое из них умножьте на 2“

нс, ” К полученному произведению прибавьте 5”

нс, ” Результат умножьте на 50”

нс, ” К произведению прибавьте второе число ”

нс, ” И наконец, вычтите из результата ” ” количество дней в году (невисокосном) ” нс, ” Сколько получилось Э

нс, ” Введем полученный результат ”

div (n + 115, 100) mod(n + 115, 100) вывод нс, ” Вы задумали числа х

КОН

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


инфор

11.33. Фокус № З

1.        Задумайте число.

2.        Умножьте его на 2. З. Прибавьте 48.

4.   Разделите на 2.

5.   Вычтите задуманное число.

6.   У вас получилось 24.

11.3.4. Фокус № 4

1.        Задумайте однозначное число.

2.        Умножьте его на З. З. Прибавьте З.

4.   Умножьте на З.

5.   Найдите сумму цифр полученного числа.

6.   У вас получилось 9.

11.3.5. Фокус № 5

1.       Задумайте трехзначное число.

2.       Припишите к нему справа это же самое число. З. Полученное шестизначное число разделите на 11.

4.   Результат разделите на задуманное число.

5.   У вас получилось 91.

113.6. Фокус № б

1.      Задумайте число.

2.      Умножьте его на 6. З. Прибавьте 50.

4. Разделите на 2. 5. Вычтите 4.

6.   Разделите на З.

7.   Вычтите задуманное число.

8.   У вас получилось 7.

11.337. Фокус № 7

1.     Задумайте число.

2.     Умножьте его на 2. З. Прибавьте 12.

4.   Разделите на 2.

5.   Вычтите 5.

6.   Вычтите задуманное число.

7.   У вас получилось 1.

11.3.83 Фокус № 8

1.                      Задумайте число.

2.                      Умножьте его на 6. З. Прибавьте 22.

4. Разделите на 2. 5. Вычтите 2.

6.   Разделите на З.

7.   Вычтите задуманное число.

8.   У вас получилось З.

11.3.9. Фокус № 9

1.                      Задумайте число.

2.                      Умножьте его на 2. З. Прибавьте 14.

4.   Разделите на 2.

5.   Вычтите 4.

6.   Вычтите задуманное число.

7.   У вас получилось З.

11.3.10. Фокус № 10

1.                      Задумайте трехзначное число.

2.                      Припишите к нему справа это же самое число. З. Полученное шестизначное число разделите на 13.

4.   Результат разделите на задуманное число.

5.   У вас получилось 77.

11.3.11. Фокус № 11

1.                      Задумайте число.

2.                      Умножьте его на 2. З. Прибавьте 36.

4.   Разделите на 2.

5.   Вычтите 8.

6.   Вычтите задуманное число.

7.   У вас получилось 10.

11.3.12. Фокус № 12

1.                      Задумайте число.

2.                      Умножьте его на 6. З. Прибавьте 46.

4.   Разделите на 2.

5.   Вычтите 5.

6.   Разделите на З.

7.   Вычтите задуманное число.

8.   У вас получилось 6.

Программы для демонстрации этих фокусов разработайте самостоятельно. Учитывая, что в них будут повторяться одни и те же фразы («Задумайте число», «Задумайте трехзначное число», «Умножьте на ... » , «У вас получилось ... » и т. п.), желательно: 1) описать эти фразы как глобальные константы:

лит Задум, ЗадумЗ, Умн, Раздр Раздб, Приб,

Выч , ВычЗадум, Припис, НайдСум, Получ

Задум” Задумайте число ”

ЗадумЗ” Задумайте трехзначное число“

Умн” Умножьте на ”

Ра зд” Разделите на ”

Ра зд 6” Полученное шестизначное число разделите на приб” Прибавьте

Выч” Вычтите

ВычЗадум          “ Вычтите задуманное число ”

ПРИПИС     ” Припишите к нему справа то же самое число '

НайдСум     ” Найдите сумму цифр полученного числа “

Получ       “ У вас получилось

2) оформить каждый фокус в виде отдельной процедуры. Например, для фокуса № З соответствующая процедура будет иметь вид:

алг Фокус З нач вывод нс, Задум

Ожидание нажатия клавиши

Умн, 2

Приб, 48

Разд, 2

Выч, 6

ВычЗадум

Получ , 18

кон

З) предусмотреть в главной части программы случайный выбор того или иного фокуса, а затем вызывать соответствующую процедуру, используя оператор варианта (выбора). Вся программа при этом может иметь вид:

Глобальные константы литерного (строкового) типа лит Задула, ЗадумЗ, Улан, Разд, Раздб, Приб, Выч,

ВычЗадум, Припис, НайдСум, Получ Задум  ” Задумайте число ”

алг ФокусыГлавная часть программы нач цел нф номер фокуса вывод нс, ” Выберем фокус ”

[ Приостановка программы до нажатия любой клавиши нц

кц при inkey() <>


Получаем случайное число в интервале от З до 12 нф З + rnd(10) выбор при нфЗ: Фокус З при нф4 : Фокус 4

при нф12: Фокус 12

все

I Приостановка программы до нажатия любой клавиши нц

кц при inkey() <> кон алг Фокус З нач

11.4. Компьютерный фокус «Отгадай число»

В основе этого фокуса лежит известная игра с таким же названием. Напомню ее правила. Один из участников игры (ведущий) загадывает целое число (например, меньшее 100). Второй участник должен отгадать это число, делая несколько попыток и называя свое число. При несовпадении названного и задуманного чисел ведущий сообщает, какое из них больше, после чего делается следующая попытка и т. д. до отгадывания. Вы, конечно, уже догадались, как должен действовать отгадывающий — при первой попытке он должен назвать число 50; потом, в зависимости от от-

6— 1523

вета, — 25 или 75 и т. п. Такой принцип, позволяющий отгадать число за минимально возможное количество попыток, называется методом бинарного поиска (деления отрезка пополам).

Компьютерный фокус состоит в следующем. Фокусник — вы, сидящий у компьютера, — просит зрителей задумать любое целое число. Компьютер должен это число отгадать, выдавая на экран свои предположения. Зрители, глядя на эти предположения, называют любые слова (например, свои имена), которые вы вводите в компьютер с клавиатуры. Компьютер же отгадывает число, причем делает это методом бинарного поиска, т. е. за минимально возможное количество попыток.

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

Основные величины, используемые в программе:


 мин и макс — левая и правая границы интервала, в котором расположено искомое число;  серед — середина этого интервала;  номер_попытки — номер попытки угадывания числа;  имя — имя одного из зрителей;  отгадал — имеет значение «у» (латинская буква), если число угадано; иначе «п».

Программа для угадывания чисел:

алг Фокус нач цел мин, макс, серед, номер попытки, лит имя, отгадал вывод нс, ” Задумайте целое число в интервале от 1 до 99” вывод нс, ” Сейчас я отгадаю его за несколько попыток! '

Приостановка программы до нажатия любой клавиши

кц при inkey () <>

1; макс 99 номер попытки

Цикл ” угадывания ” числа

Очередная попытка номер попытки номер попытки + 1 серед (мин + макс) / 2

вывод нс вывод нс, номер попытки, вывод нс, ” -я попытка. Вы задумали число        серед вывод нс,       нц отгадал  getkey() Ждем нажатия клавиш ” У“ или ” п ”


кц при отгадал ” у ” или отгадал если отгадал

вывод нс,

вывод нс, И НЕ Т !

Приостановка программы до нажатия любой клавиши

        если отгадал      ” п ” Если ответ неверный

вывод нс, ” Кто это сказал? Как вас зовут? ”

Вводим имя зрителя ввод имя

Меняем границы интервала поиска если имя [длин (имя) ]


Если последний символ имени пробел то мин     с еред иначе макс       серед все

кц при отгадал вывод нс, 1 ' Число отгадано ! ” вывод нс, “ Количество попыток номер попытки вывод нс, ” Какой я умный !

Приостановка программы до нажатия любой клавиши

кон

Примечания

1.                        Функция getkey ( ) возвращает символ нажатой клавиши. В языке Паскаль ее аналогом является функция readkey, в Бейсике — 1NkEY$, а в си — getch ( ) •

2.                        Чтобы при определении задуманного числа увеличить значение мин, в конце имени зрителя необходимо ввести пробел; для уменьшения значения макс пробел вводить не нужно.

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

В представленной далее программе используются следующие основные величины (кроме мин, макс, сереД, отгаДал и номер попытки, применявшихся в первом варианте программы):


 i — порядковый номер символа в имени зрителя;  время1 — время в момент ввода первого символа;  время2 — время в момент ввода второго символа;  время — промежуток времени между вводом первого и второго символов;  предельное время — предельное значение промежутка времени между вводом первого и второго символов, в зависимости от которого происходит изменение границ интервала поиска мин и макс. Это значение подбирается экспериментально.

Передачу в программу информации, в зависимости от которой происходит изменение значений мин и макс, можно проводить по следующему правилу: если время > предельное время, то задуманное число больше последнего предположения компьютера (т. е. нужно увеличить значение мин), в противном случае — оно меньше (нужно уменьшить значение макс).

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

алг Фокус нач цел мин, макс, серед, номер попытки, время 1, время2, время, предельное время, 5, лит отгадал, с вывод нс, ” Задумайте целое число в интервале от 1 до 99” вывод нс, ” Сейчас я отгадаю его за несколько попыток! ”

Приостановка программы до нажатия любой клавиши

НЦ кц при inkey() <>

1 ; макс       99 предельное время - 2000Значение подбирается экспериментально

        номер попытки          0

[ цикл ” угадывания ” числа

Очередная попытка

                          попытки           номер попытки + 1

(мин + макс) / 2

нс нс , номер попытки, нс, “ —я попытка. Вы задумали число серед

                    нс,       

отгадалgetkey ( ) Ждем нажатия клавиш ” у“ или ” п ” кц при отгадал или отгадал если отгадал

вывод нс,

вывод нс, “ НЕТ


Приостановка программы до нажатия любой клавиши

если отгадалЕсли ответ неверный

вывод нс, ” Кто это сказал? Как Вас зовут? ” вывод нс о

нц цикл ввода символов имени

getkey ( )         Ждем нажатия клавиши если с <> ”Enter”Если ввод символов имени не окончен то вывод с Повторяем символ на экране все выбор при i — 1: время 1— время Нас интересуют только первый

при i2 : время2время ' и второй символ

имени времявремя 2  время 1

все кц при с” Enter”

Меняем границы интервала поиска если время > предельное время то мин иначе макс     серед

все кц при отгадал вывод нс, ' Число отгадано! ” вывод нс, “ Количество попыток номер попытки вывод нс, ” Какой я умный! ” приостановка программы до нажатия любой клавиши

кон

В заключение дам несколько подсказок по разработке аналогичных программ на других языках программирования.

1.В программе на Паскале проконтролировать, нажата ли клавиша Enter, можно следующим образом:


с if с О #13 then

На языке Бейсик такой контроль выполняется при помощи фрагмента программы:

INkEY$

IF с; о CHR$ (13) ТНЕћЈ

2.Для определения значений времени в момент ввода первого и второго символов в Паскале используется процедура GetT ime, а в Бейсике — функция TIMER.

11.5, Фокус «Отгадывание названий»

Суть фокуса — следующая. На экране монитора показывается картинка, изображенная на рис. 11.1.

Вы приглашаете к монитору одного из зрителей и предлагаете ему: «Я сейчас отвернусь, а вы нажмите клавишу с цифрой 1. В прямоугольниках появятся названия рыб. Загадайте, какую рыбу я должен поймать, напишите ее название на листе бумаги, после чего нажмите клавишу с цифрой 2».

ф

 

с

Рис. 11.1

Играющий нажимает клавишу с цифрой 1, и экран приобретает вид, показанный на рис. 11.2.

 

щуп

 

СЕЛЬДЬ

 

СТАВРИДА

 

ОКУНЬ

 

язь

 

ПЕСКАРЬ

 

Рис. 11.2

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

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

Ваша задача крайне проста: нужно первые два касания выполнить в произвольном порядке, а затем касаться букв в прямоугольниках так, чтобы из этих букв составлялось слово ФОКУСЫ. Все остальное получится само собой — на какой букве играющий прервет ваши касания, там обязательно и будет задуманное им слово.

Ее надо подготовить заранее.

Секрет фокуса — в том, что названия рыб расположены по порядку касаний так, что каждое последующее название на одну букву длиннее предыдущего. Поэтому, произнося задуманное слово побуквенно, загадывающий слово сам отсчитывает нужное вам количество шагов. Буквы же слова ФОКУСЫ нужны для того, чтобы указать вам порядок касаний. Кроме того, они запутывают зрителей, мешая им разгадать секрет фокуса.

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

Программа, используемая во время демонстрации фокуса, выглядит следующим образом:

алг Фокус нач сим с

ОчисткаЭкрана

Буквы

НЦ

С getkey ( ) кц при с Ждем нажатия клавиши с цифрой 1 ОчисткаЭкрана


Названия

с qetkey ( ) юд при с Ждем нажатия клавиши с цифрой 2 ОчисткаЭкрана Буквы

С getkey ( ) кц при с Ждем нажатия клавиши с цифрой 1 Очистка экрана

Названия кон

Здесь ОчисткаЭкрана — стандартная процедура очистки экрана, Буквы — вспомогательная процедура , изображающая на экране буквы в прямоугольниках (см. рис. 11.1), Названия вспомогательная процедура, изображающая названия рыб в прямоугольниках (см. рис. 11.2), getkey ( ) — функция, возвращающая символ на нажатой клавише. (Как отмечалось в задаче 11.4, в языке программирования Паскаль ее аналогом является функция readkey, а в Бейсике — INkEY$.)

Если вы не знакомы с правилами оформления собственных процедур, то вместо процедур Буквы и Названия можно просто включить в программу операторы, печатающие на экране буквы и названия рыб в прямоугольниках.

11.6, Варианты фокуса «Отгадывание названий»

Рассмотрим еще несколько вариантов предыдущего фокуса.

11.6.1. Первый фокус отличается тем, что:

1)                       в нем используется восемь названий животных, расположенных, как показано на рис. 11.3;

ЗЕМЛЕРОЙКА

 

НОСОРОГ

ЛЕВ

 

БАРСУК


Рис. 11.3

2)                       перед началом демонстрации фокуса перед играющим появляются восемь «пустых» прямоугольников (в предыдущем фокусе в прямоугольниках были записаны буквы слова ФОКУСЫ, помогающие вам перемещать «волшебную палочку» от одного прямоугольника к другому);

З) перемещение по прямоугольникам здесь осуществляется так: два первых касания вы делаете в произвольном порядке, а затем движетесь от левого нижнего прямоугольника (со словом «лев») по линиям «магической звезды» — перепрыгивая через два прямоугольника против часовой стрелки («лев» «слон» «олень» и т. д.). Ясно, что эти линии на экран не выводятся, играющий и зрители о них, конечно, не подозревают, а поскольку первые касания фокусник каждый раз может делать иначе, то заподозрить систему в его движениях зрители, как правило, не могут.

Программа, используемая во время демонстрации этого фокуса, имеет вид:

алг Фокус 1 нач сим с

Очистка Экрана

Названия

Играющий задумывает название


 

170

getkey ( ) кц при с ” 2” Ждем нажатия клавиши с цифрой 2 ОчисткаЭкрана

Прямоугольники

Фокусник дотрагивается до прямоугольников

с getkey ( ) кц при с ” 1” | Ждем нажатия клавиши с цифрой 1 ОчисткаЭкрана

Названия

” Волшебная палочка ” фокусника указывает на задуманное слово кон

Здесь Очистка Экрана, Названия и Прямоугольники — процедуры, описанные в предыдущем фокусе; getkey ( ) Функция, возвращающая символ нажатой клавиши (также см. предыдущий фокус).

11.62. Второй фокус аналогичен только что описанному, с той разницей, что названия в прямоугольниках выбираются случайным образом из шести различных наборов:

1)     лев, слон, олень, барсук, носорог, обезьяна, горностай, землеройка;

2)     сиг, карп, угорь, лосось, корюшка, скумбрия, нототения, барабулька;

З) сыч, грач, цапля, ворона, соловей, ласточка, коростель,

трясогузка;

4) жук, муха, пчела, короед, бабочка, стрекоза, светлячок,

долгоносик;

5) дом, изба, сарай, здание, строение, постройка, небоскреб,

сооружение;

6) нож, стол, вилка, стакан, тарелка, половник, мясорубка, сковородка.

В приведенной ниже программе для вывода каждого из этих наборов используется отдельная процедура, а выбор набора, выводимого на экран, осуществляется случайным образом.

алг Фокус2 нач сим с, цел п

Очистка Экрана

Определяем номер набора названий rnd(6) + 1

Выводим соответствующий набор

1 : НазванияЖивотных при п — 2 : Названия Рыб

З : НаЗВаНИЯПТИЦ

4              : НазванияНасекомых 5 : НазванияСтроений иначе : Названия КухоннойУтвари

Играющий задумывает название

getkey ( ) кц при с ” 2“ | Ждем нажатия клавиши с цифрой 2 ОчисткаЭкрана

Прямоуголь ники

Фокусник дотрагивается до прямоугольников

qetkey ( ) кц при с ” 1” | Ждем нажатия клавиши с цифрой 1 Очистка экрана

1 : НазванияЖивотных

5              : НазванияСтроений иначе : НазванияКухоннойУтвари

” Волшебная палочка ” фокусника указывает на задуманное слово кон

11.6.3. Третий фокус — самый эффектный. Фокусник делает так, чтобы играющий втайне от него выбирал еще и слова для заполнения прямоугольников. Для этого на экран сначала выводится перечень тематических групп, например:

Выберите номер группы:

1.                 Животные.

2.                 Рыбы. З. Птицы.

4.   Насекомые.

5.   Строения.

6.   Кухонная утварь. Ваш выбор:

' 172

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

11,7. Игра-упражнение «Поймай

Описанные в предыдущих разделах фокусы можно положить в основу компьютерной программы-игры, проверяющей правописание редких слов с двойными согласными.

Суть этой игры состоит в следующем. Сначала на экране появляется картинка, показанная на рис. 11.4.

 

ГИЮ,ППЮПОТАМ

 

ГОРИ/Л,ЛЛ/А

 

КОАЛ,ЛЛ/А

 

ЗЕ/Б,БЫУ

 

АЛ,ЛЛМГАТОР

 

сию,пт

 

ИГУАЖ,НН/А

 

Рис. 11.4

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

жатием клавиши с цифрой 1 вызываете на экран исходную картинку (см. рис. 11.4). При правильном решении «волшебная палочка» должна указывать на объявленное вами слово. Иначе палочка остановится на другом слове. Вы можете также показать заранее подготовленную табличку с правильным написанием объявленного слова (см. рис. 11.5). Затем игра повторяется для другого слова.

 

ГИППОПОТАМ

 

ГОРИЛЛА

 

 

КОАЛА

 

ЗЕБУ

 

РОСОМАХА

 

АЛЛИГАТОР

 

сип

 

ИГУАНА

 

Рис. 11.5

Программа, используемая во время демонстрации этой игрыупражнения, имеет следующий вид:

алг Игра—упражнение

нач сим с

ОчисткаЭкрана

Названия

с   getkey ( ) кц при с   ” 2” Ждем нажатия клавиши с цифрой 2 Очистка Экрана

Прямоуголь ники

Ведущий спрашивает играющего

[и дотрагивается до прямоугольников

с getkey ( ) кц при с ” 1” ' Ждем нажатия клавиши с цифрой 1

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

 

174

Очистка экрана

Названия

При правильном решении

” волшебная палочка ” играющего указывает на объявленное слово кон

Другие наборы слов для этой игры:

1.        Сэ(р,рр), а(л,лл)оэ, та(л,лл)ер, ску(т,тт)ер, ко(р,рр)ида, опере(т,тт)а, ко(р,рр)ектор, кастанье(т,тт)ы (ответы: сэр, алоэ, талер, скутер, коррида, оперетта, корректор, кастаньеты);

2.        Мэ(р,рр), му(с,сс), пре(с,сс), стре(с,сс), ми(л,лл)ион, фо(р,рр)ейтор, апе(л,лл)яция, а(к,кк)редитив (ответы: мэр, мусс, пресс, стресс, миллион, форейтор, апелляция, аккредитив);

З. Пэ(р,рр), ва(т,тт), а(л,лл)юр, а(к,кк)орд, ба(с,сс)ейн, а(н,нн)аконда, ба(р,рр)икады, а(п,пп)ликация (ответы: пэр, ватт, аллюр, аккорд, бассейн, анаконда, баррикады, аппликация).

Заметим, что в описанных выше игре и фокусах не обязательно начинать движения по буквам слова ФОКУСЫ или по линиям «магической звезды» после двух произвольных касаний — количество предварительных касаний можно увеличивать. Это позволит соответственно увеличить количество букв для кратчайшего слова.

11.8. «Отгадыватель мыслей»

В заключение «научим» компьютер отгадывать не числа, слова или даты, а... мысли. Не верите? Тогда зайдите на сайт http : / /chess-sch00120080. narod. ru/Raznoe /Misli/Misli . htm и в разделе «Разное» выберите второй пункт. Вам нужно загадать двузначное число, вычесть из него сумму его цифр, найти полученную разность в имеющейся таблице и запомнить символ рядом с этой разностью. Затем нужно щелкнуть на прямоугольной кнопочке — впрочем, вы всё увидите сами.

Секрет этого фокуса я раскрывать не буду , а сразу приведу программу, которая демонстрирует такой фокус. В ней используется двумерный массив т строкового типа из 9 строк и 20 столбцов. В каждом нечетном столбце мы запишем числа от 5 до 94 (по возрастанию, расположив эти числа по строкам), а в каждом четном столбце — символы (генерируя случайным образом коды этих символов). Другие особенности программы описаны в комментариях к ней.

Желающие могут сами сделать это, проанализировав приведенную далее программу.

алг Отгадыватель мыслей нач лит таб т [ 1 : 9 , 1 : 2 0 ] , цел i, ј, код, сим свой ОчисткаЭкрана выводим на экран информацию о порядке действий

вывод

нс,

” Задумайте 2-значное число . ”

вывод

нс,

” Вычтите из него сумму его цифр .

вывод

НС ,

” Разность запомните. Если вы готовы

вывод

НС

' нажмите любую клавишу, найдите эту ”

вывод

нс,

” разность в появившейся таблице ”

вывод нс, ' и запомните символ справа от нее . '

Приостановка программы до нажатия любой клавиши

кц при inkey ( ) <>

Заполняем массив

Записываем в него числа, нц для -i от 1 до 9 нц для Ј от 1 до 10 лит (10           ( i

' а затем символы нц для i от 1 до 9 нц для ј от 1 до 10

Рассчитываем код код 150 + rnd ( 105)

Записываем соответствующий символ

                      Т [ -12 , 2 *                             сим ( код)

кц

Определяем (случайным образом) ' свой ” символ

' и записываем его в массив на ” соответствующие ' места код 150 + rnd ( 105) свой сим ( код) нц для -i от 1 до 9 нц для ј от 1 до 10

если mod (цел ( т [1, 2 *  1 1 ) , 9) то

                         5]         свой

все

кц

Выводим весь массив

ОчисткаЭкрана

176

вывод нс, вывод нс, ” Если Вы нашли нужный символ, ” вывод нс, ” нажмите любую клавишу ”

Приостановка программы до нажатия любой клавиши нц

кц при inkey () <> ОчисткаЭкрана вывод нс, ” Вы нашли символ “ свой,   Невероятно ! ” кон

Примечание. Функция лит возвращает строковое представления числа (ее аргумента), функция сим возвращает символ, код которого равен числу, указанному в качестве ее аргумента, а функция цел — числовое представление строки цифр. Аналоги этих функций в языках программирования Паскаль и Бейсик приведены в табл. 11.1.

Таблица 11.1

Функция

Язык Паскаль

Язык Бейсик

лит

Процедура STR

Функция STR$

сим

Функция CHR

Функция CHR$

цел

Процедура VAL

Функция VAL

Напомним также, что в Бейсике нумерация строк и столбцов двумерного массива начинается с нуля.

программиста спрашивают:

Не помнишь, сколько будет два в четвертой степени?

— (Без запинки) Шестнадцать.

А два в шестнадцатой?

 (Без запинки) Шестьдесят пять тысяч пятьсот

тридцать шесть.

— Вот голова, ну ты даешь! Ну, а три в четвертой? — (После паузы) Не помню точно. Кажется, дробное число получается.


Моделирование простейших игр на компьютере

Кто сам пилит свои дрова, тот согревается дважды

(Французская поговорка)

Кто сам программирует свои компьютерные игры, тот наслаждается дважды

(Из книги Ж. Арсака «Программирование игр и головоломок» — М.: Наука, 1985)

А втор уверен, что вы, реализовав на компьютере описанные в этой главе несложные игры, наверняка согласитесь со вторым эпиграфом...

12.1. Игра «Чет или нечет»?

12.1.1. Программа на школьном алгоритмическом языке

Правила игры. Играющий в ответ на появляющийся на экране вопрос « Чет (2) или нечет (1)?» вводит одно из двух чисел — 1 или 2, после чего компьютер случайным образом генерирует одно

из них. Результат сравнения введенного числа с фактическим выводится на экран. Цель игры — угадать их совпадение.

Простейший вариант программы « Чет или нечет?» имеет вид:

алг Чет или нечет?

нач цел число_компьютера, ответ

вывод нс, ” Чет (2) или нечет ввод ответ если ответ <> 1 и ответ о 2


вывод нс, ” Надо вводить 1 или 2 ” вывод нс, ” Попробуйте еще раз ”

ответ—


кц при 1 или ответ 2 число компьютера 1 + rnd(2) вывод нс, ” Число компьютера : число компьютера ” То есть Вы ” если число компьютера ответ

вывод ' выиграли ”

” проиграли ! ”

кон

Комментарии к программе:

1)                       используются переменные число_компьютера (число, генерируемое компьютером) и ответ (число, введенное играющим);

2)                       производится проверка корректности введенного значения ответ; в случае ошибочного значения (не 1 и не 2) предлагается ввести число повторно (использован оператор цикла с постусловием);

З) для получения случайного числа, равного 1 или 2, используется функция rnd (аналогичная функция имеется и в других языках программирования).

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

цел п п 11 Количество вопросов алг Чет или нечет?

нач цел число компьютера, ответ, прав, -i

Количество правильных ответов

“ Чет (2) или нечет (1) ? ”

если ответ <> 1 и ответ о 2

” Надо вводить 1 или 2 ”

” Попробуйте еще раз ”

1 или ответ — 2 число компьютера        1 + rnd (2) вывод нс, “ число компьютера : число компьютера если число_компьютера  ответ

прав + 1

правильных ответов. ” прав неправильных ответов : ” п — прав прав

вывод нс, ” То есть Вы выиграли ”

вывод нс, ” То есть Вы проиграли! “

кон

Самостоятельно разработайте вариант программы, в которой все 11 чисел, генерируемых компьютером, выводятся на экран одновременно после ввода играющим «своих» 11 чисел. Для хранения чисел, введенных играющим и сгенерированных компьютером, используйте два массива.

12.1.2. Игра в среде Microsoft Excel

Вариант 1

Правила игры. Играющий в ответ на имеющийся вопрос «Чет (2) или нечет (1)?» (рис. 12.1) вводит число 1 или 2.

180

 

 

в

с

1

Игра «Чет или нечет?»

 

2

Чет (2) или нечет (1 р

 

 

3

Число компьютера:

 

 

4

 

 

 

Рис. 12.1

После ввода ответа в ячейку В2 программа Excel случайным образом генерирует в ячейке ВЗ число 1 или 2 и определяет результат («Верно» или «Неверно»).

Для реализации этих действий в ячейку ВЗ надо ввести формулу:

а в ячейку В4 — формулу:

= ВЗ•, ”Верно”•, ”Неверно”)

Однако при таком заполнении листа Excel еще до ввода ответа играющего в ячейку В2 проявятся два недостатка:

1)                       в ячейке ВЗ будет уже выведено какое-то «предыдущее» число. И хотя «верить» этому значению играющий не может (так как после ввода числа в ячейку В2 значение в ячейке ВЗ может измениться), все равно лучше было бы сделать так, чтобы в ячейке ВЗ случайное число появлялось только после ввода значения в ячейку В2. Это можно сделать, используя функцию ЕПУСТО •

; 1 + ЦЕЛОЕ(СЛЧИС() * 2)

2)                       в ячейке В4 изначально будет выведен ответ «Неверно» , что не совсем корректно. Чтобы устранить этот недостаток, здесь тоже следует применить функцию ЕПУСТО. При этом формула в ячейке В4 будет выглядеть несколько громоздко:

; ВЗ•, ”Верно”•, ”Неверно”))

но зато ответы в ячейке В4 будут появляться только при наличии числа в ячейке В2.

Вариант 2

Правила ИГРЫ. Играющий должен ввести 11 случайных чисел 1 или 2 (ячейки ВЗ:В1З), после чего в ячейках СЗ:С1З появляются числа, сгенерированные компьютером, а также определяется результат игры (рис. 12.2).

С особенностями этой функции ознакомьтесь самостоятельно.

 

 

 

с

 

1

Игра «Чет или нечет?»

 

 

2

Номер числа

Ваше мнение: чет (2) или нечет (1 )?

Число компьютера

 

з

1

2

2

 

4

2

1

2

 

 

 

 

 

 

13

11

1

1

 

14

 

 

 

 

15

Результат:

 

 

 

16

правильных ответов:

 

 

 

17

неправильных ответов:

 

 

 

18

Итог

 

 

 

19

 

 

 

 

Рис. 12.2

В ячейке В18 должен быть выведен текст «Вы выиграли» или «Выиграл компьютер» (ничьей быть не может!). Текст в ячейках А15:А18 и В16:В18 должен выводиться только после заполнения играющим ячейки В1З и исчезать после ее очистки.

Определение количества правильных и неправильных ответов:

1)                       в одном из столбцов, которые играющий не видит (например, в столбце М за пределами экрана или в скрытом столбце), можно получить ответы на вопрос о том, отгадано ли каждое из 11 чисел (рис. 12.3). Это можно сделать с помощью функции ЕСЛИ;

 

 

м

 

1

 

 

 

2

 

 

 

з

 

да

 

4

 

 

 

 

 

 

 

13

 

да

 

14

 

 

 

Рис. 12.3

2)                       количество правильных и неправильных ответов теперь определяется с использованием функции СЧЕТЕСЛИ применительно к значениям в диапазоне МЗ:М1З.

Необходимые формулы запишите самостоятельно.

12.2. игра «Отгадай число»

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

В приведенной ниже программе на школьном алгоритмическом языке использованы следующие переменные:

 число_компьютера — число, генерируемое компьютером;  ответ — число, вводимое играющим;

— количество попыток (введенных чисел, включая отгаданное число).

алг Отгадай число нач цел х, У, п число компьютера rnd(100) вывод ” Компьютер ' загадал ' число в интервале от 0 до 99”

Отгадывание п       число попыток

п         п + 1 | очередная попытка вывод нс, “ Наберите свое число. ' ввод ответ если число_компьютера > ответ то вывод нс, “ Загаданное число больше . ”

 все если число компьютера < ответ то вывод нс, ” Загаданное число меньше . ”

все кц при число компьютера ответ вывод нс, ” Правильно ! ”  вывод нс, ” число попыток до отгадывания п кон

С тем, как работает функция СЧЕТЕСЛИ,ознакомьтесь самостоятельно.

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

12.3. Игра «Кубик»

Эта игра моделирует бросание игрального кубика каждым из двух участников, после чего определяется результат: у кого выпало больше очков.

12.3.1, Программа на школьном алгоритмическом языке

алг Кубик нач лит имя 1, имя2, цел к 1, к2 вывод нс, ” Введите имя первого игрока “ ввод имя 1 вывод нс, “ Введите имя первого игрока ” ввод имя2 вывод нс, ” для ' бросания ' кубика первым игроком“ вывод ” нажмите любую клавишу ”

НЦ

кц при inkey rnd(6) вывод нс, ” Выпало :

вывод нс, ” для ' бросания ' кубика вторым игроком“ вывод ” нажмите любую клавишу ” нц

кц при inkey к2 1 + rnd(6) вывод нс, ” Выпало : к2 если к2 > к 1 то вывод нс, ” Выиграл (а) ” , имя 2 иначе если к2 то вывод нс, ” Выиграл (а) ” имя 1 иначе вывод нс, НИЧЬЯ

все кон

184

123,2, Игра в среде Microsoft Excel

Требуемый вид листа Excel показан на рис. 12.4.

 

 

В

с

1

Игра «Кубик»

 

 

2

Имя первого игрока:

 

 

 

У первого игрока выпало:

 

 

4

Имя второго игрока:

 

 

5

У второго игрока выпало:

 

 

6

Итог

 

 

7

 

 

 

Рис. 12.4

Результат игры выводится в ячейке Вб в виде «выиграл Петя» (если имя первого игрока — Петя), «выиграл Вася» (если имя второго игрока — Вася) или «ничья» .


Смоделировать бросание игрального кубика, т. е. получить одно из случайных целых чисел: 1, 2 6, можно с помощью функции слчисо.

Число в ячейке ВЗ и текст в ячейках АЗ и А4 должны выводиться только после ввода имени первого игрока, а число в ячейке В5 и текст в ячейках Аб, Аб и Вб — только после ввода имени второго игрока. Для этого используется функция ЕПУСТО.

Задание

Разработайте программы и/или заполните листы электронной таблицы для моделирования следующих вариантов игры «Кубики» :

1) каждый из двух играющих бросает три игральных кубика; выигравшим считается тот, кто набрал наибольшую сумму очков; 2) каждый из двух играющих бросает по одному кубику заданное количество раз; выигравшим считается тот, у кого больше выигрышей в отдельных бросаниях;

З) каждый из двух играющих бросает по одному кубику заданное количество раз (или, что то же самое, заданное количество кубиков один раз); выигравшим считается тот, кто набрал наибольшую сумму очков;

4) каждый из двух играющих бросает по одному кубику до тех пор, пока кто-то из них не наберет заданную сумму очков.

12,4. игра «Карты»

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

При моделировании названиям мастей и названиям достоинств карт присвоены условные номера: масть «пики» — 1, масть «трефы» — 2, масть «бубны» — З, масть «червы» — 4; «шестерка» — 6, «семерка»  «десятка» — 10, «валет» — 11, «дама» 12, «король» — 13, «туз»

12.4.1. Программа на школьном алгоритмическом языке

Основные этапы работы программы для этой игры следующие:

1)               ввод имен участников;

2)               определение (случайным образом) номеров масти и достоинства карты для первого игрока;

З) определение по этим номерам соответствующих названий масти и достоинства карты, а также ее полного названия («Дама пик», «ПЈестерка бубен» и т. п.);

4) определение номеров масти и достоинства карты для второго игрока;

5) определение соответствующих названий масти и достоинства карты, а также ее полного названия; 6) определение результата игры.

Соответствующая программа может иметь вид:

алг Карты нач лит имя], имя2, цел номер масти], номер масти2 цел номер дост1, номер дост2 лит масть, дост, карта 1 , карта 2

Ввод имен участников игры вывод нс, ” Введите имя первого игрока ” ввод имя 1 вывод нс, “ Введите имя второго игрока ' ввод имя2

Определение характеристик карты первого игрока номер масти] 1 + rnd(4)


            номер дост1        6 + rnd(9)

Определение соответствующего названия масти

(в родительном падеже) выбор при номер масти 11 : ма сть ' пик ” при номер масти12 : ма с ть” треф“ при номер Ма СТИ1З: масть“ бубен ” при номер масти 14: масть' червей“

все

[и достоинства карты выбор при номер дост16: дост” шестерка ”

при номер дост110 : дост“ десятка“ при номер дост111 : дост  ” валет ” при номер дост112 : дост” дама ” при номер дост113 : дост” король ” при номер дост114 : дост“ туз ” все


Формирование полного названия карты карта 1    + масть вывод нс, ” Карта первого игрока: ' , карта 1

Определение характеристик карты второго игрока номер ма сти21 + rnd(4) номер дост26 + rnd (9) выбор при номер ма сти21 : масть” пик ”

при номер дост26: дост” шестерка ”

при номер дост214 : дост” туз ”

карта 2 дост + вывод нс, ” Карта второго игрока . карта2

Определение результата игры если номер масти] > номер масти2

вывод нс, ” Выиграл  имя 1 иначе если номер МДСТИ2 > номер масти 1 то вывод нс, ” Выиграл       имя 2

Масти одинаковые номер дост1 > номер дост2

                     вывод нс, “ Выиграл          имя 1

1 иначе если номер дост2 > номер дост1 то вывод нс, ” Выиграл имя2 иначе вывод нс, ” Ничья ! ” все

кон

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


Игра в среде Microsoft Excel

Вид листа Excel для игры показан на рис. 12.5.

 

 

в

с

1

Игра «Карты»

 

 

2

Имя первого игрока ->

 

 

З

Карта первого игрока:

 

 

4

Имя второго игрока ->

 

 

5

Карта первого игрока:

 

 

6

Итог

 

 

7

 

 

 

Рис. 12.5

Результат игры в ячейке Вб выводится аналогично игре «Кубик» (см. ранее). Аналогичными являются и требования к порядку вывода информации в ячейках АЗ:А6, ВЗ, В5.

Для моделирования выбора «наугад» одним из участников одной карты из полного набора игральных карт необходимо:

1) смоделировать выбор «наугад» названия достоинства карты из следующего набора: «шестерка», «семерка», «восьмерка», «девятка», «десятка», «валет», «дама», «король», «туз». Это можно сделать так:

   получить случайное число (номер достоинства) из интервала 6, 7, . 14 и записать его в одну из невидимых для играющего ячеек (например, в столбце М);

   по полученному номеру определить соответствующее название достоинства карты. Для этого может быть использована функция ВЫБОР:

” Шестерка", ”Семерка", ” Восьмерка ' ,

' Девятка ”, ” Десятка”, ” Валет", ” Дама“, ” Король“, ” Туз”)

где мз — адрес ячейки с значением номера достоинства. Далее нужно записать полученное с помощью функции ВЫБОР название достоинства карты в одну из невидимых ячеек (например, в М4);

188


2) смоделировать выбор «наугад» названия масти карты из четырех возможных названий, записанных в родительном падеже («пик», «треф», «бубен», «червей»), и записать это название, например, в ячейку Мб. Все это можно сделать аналогично моделированию выбора названия достоинства карты;

З) получить полное название карты в виде «Дама пик», «Шестерка бубен» и т. п. Для этого может быть использована функция СЦЕПИТЬ:

Для второго участника игры полное название карты определяется аналогично.

Результат игры можно определить по значениям, полученным в столбце М, с помощью функции ЕСЛИ.

Задания

Разработайте программы и/или заполните листы электронной таблицы для моделирования двух вариантов игры «Карты» :

1)                     с неоднократным сравнением карт двух игроков (см. вариант 2 игры «Чет или нечет?»);

2)                     с дополнительным условием о том, что имеется козырная масть (любая карта козырной масти «старше» любой карты некозырной масти). Номер козырной масти выбирается случайным образом, а название этой масти выводится на экран в отдельной строке или, в электронной таблице Microsoft Excel, — в одной из ячеек листа.

12.5, Игра «Быки и коровы»

Условия игры. Компьютер генерирует четырехзначное число, в котором все цифры различны. Играющий пытается отгадать это число, делая несколько попыток, в каждой из которых он вводит свое число. После каждой такой попытки компьютер проводит анализ ответа и сообщает о степени совпадения введенного числа с задуманным, характеризуемой количеством «коров» и «быков». При этом «бык» — это цифра в ответе, совпадающая по разряду с такой же цифрой отгадываемого числа, а «корова» — цифра введенного играющим числа, имеющаяся в загаданном числе, но не совпадающая с ней по разряду (местоположению в числе). Например, если было загадано число 5391, то число 9345 содержит одного «быка» (цифра З в разряде сотен) и две «коровы» (цифры 5 и 9). Для чисел же 4710 и 7148, соответственно, будет нуль «быков» и три «коровы». (Если играющий сдается, то он должен ввести число О.)

В приведенной ниже программе использованы следующие переменные:

   х — число, генерируемое компьютером;

   у — число, вводимое играющим;

  


р — количество попыток (вводимых чисел, включая отгаданное число).

Действия по «загадыванию» числа компьютером и по подсчету количества «быков» и «коров» в числе, введенном играющим, оформлены в виде отдельных вспомогательных процедур Загадывание числа и и ” коров ” •

алг Загадывание числа (арг рез цел х) нач цел таб а [1 :4]

Генерируем случайное четырехзначное число х rnd (9000) + 1000

[ Определяем цифры числа х div(x, 1000)

100) , 10) mod      (х, 10) , 10) mod (х, 10)

Если все цифры числа х различны, то принимаем это число кц при а [1) <> а [2) и а [1] <> а [З) и а [2] <> а [З) кон


алг Подсчет числа ” быков ” и_”коров” (арг цел х, у) нач цел Ь, К, -i, 5, цел таб а [1 : 4 ] , с [ 1 : 4 )

” загаданного“ компьютером

10)

10)

введенного играющим

10) 10)

      Рассчитываем                     ” быков    

нц для i от 1 если a [ i ]


      Рассчитываем                      ” коров ” (К)

-Ј от

то К

К

кон

Примечание. В этих процедурах в массиве а хранятся цифры числа, «загаданного» компьютером, а в массиве с — цифры числа, введенного играющим.

Основная часть программы при этом может иметь вид:

алг Игра

НаЧ цел х, у, р

Загадывание числа (х) вывод НС , ” Компьютер ' загадал ' четырехзначное число, ' вывод нс, ” в котором все цифры различны. ” вывод нс, “ Наберите это число '

Самостоятельно ответьте на вопрос: какие числовые ответы компьютера (количество «коров» и количество «быков») возможны в этой игре? Заметим, что здесь не все так просто, как кажется с первого взгляда...

12.6. Игра Баше

Условия игры. На столе выложено п предметов (спичек, монет, камешков и т. п.). Играют двое. Они поочередно забирают несколько предметов, причем количество забираемых предметов не превышает заранее оговоренного числа К (О < К п). Проигрывает тот, кто в свой очередной ход вынужден забрать последний предмет .

Сразу заметим, что существует выигрышная тактика для игрока, берущего предметы вторым (т. е. тактика, следуя которой, второй игрок обеспечивает себе победу при определенных условиях). Чтобы найти ее, определим, какие ситуации являются проигрышными для игрока, делающего очередной ход. Такой ситуацией, в частности, является положение, когда на столе остался один предмет. Если количество забираемых предметов не пре-

Существует и вариант этой игры, в котором, наоборот, выигрывает тот, кто заберет все оставшиеся предметы.

вышает К, то второй проигрышной ситуацией является наличие на столе (1 + (К + 1)) предметов: действительно, сколько бы предметов при этом ни взял делающий очередной ход, его соперник может свести ситуацию к одному оставшемуся предмету. Проанализировав другие проигрышные ситуации когда на столе остается (1 + 2(k + 1)), (1 + З(К + 1)) и т. д. предметов, можно установить, что все они характеризуются следующим свойством: остаток от деления количества имеющихся предметов на (К + 1) равен 1. Следовательно, выигрышная стратегия заключается в том, чтобы всегда на очередном шаге брать столько предметов, что соперник остается в проигрышной ситуации (с количеством предметов, для которого справедливо указанное выше свойство). Ясно также, что если уже изначальное количество предметов обладает этим свойством, то начинающий игру не сможет реализовать описанную выигрышную тактику (если, конечно, его соперник также знает ее).


Установим теперь правило, определяющее, сколько предметов надо брать, чтобы оставлять сопернику проигрышную ситуацию (если это вообще можно сделать). Обозначим имеющееся в какой-то момент игры количество предметов как т и напомним, что брать разрешается от 1 до К предметов. Можно рассуждать так. Количество предметов в проигрышной ситуации равно ближайшему меньшему, чем т, числу, кратному (К + 1) и увеличенному на 1. Это количество можно определить следующим образом:

если т кратно (К + 1), то брать ((m div (К + 1)) — 1) • (К + 1) + 1 предметов, иначе брать (т div (К + 1)) • (К + 1) + 1 предметов (где div — операция целочисленного деления).

Можно упростить это правило: надо всегда оставлять сопернику (т — 1) div (К + 1) • (К + 1) + 1 предметов.

Перейдем теперь к разработке программы, которая моделирует игру Баше между компьютером и человеком. В ней кроме указанных величин т и К используются следующие переменные:

*     п — начальное количество предметов;

*     Ь — количество предметов, которое берет делающий очередной ход;

*     р — величина, принимающая случайное значение 1 или 2 и определяющая участника игры, делающего первый ход;

*     — количество предметов, которое надо оставить, чтобы создать для соперника проигрышную ситуацию (см. выше). алг Игра Баше нач цел п, К, п, р, Ь, z

вывод нс, “ Исходное количество предметов : п 2 + rnd (4) вывод нс, ” Можно брать от 1 до К, предметов ”

Определяем, кто начинает игру

1 + rnd (2)

” Начинает компьютер ”

вывод нс, ” Начинаете Вы“

Повторение ходов

то I Начинает компьютер

Проверяем, можно ли применить выигрышную тактику если mod (п, К + 1) <> 1

Можно


Применяем ее

Определяем проигрышную ситуацию div(m — 1, К + 1)

Берем необходимое количество предметов

Выигрышную стратегию применить нельзя

Берем предметы ” наугад ” 1 + rnd(k)

вывод нс, ” Компьютер взял“

вывод нс, ”Сколько берете Вы? ”

если Ь <= 0 или Ь > К или Ь > п

вывод нс, ” Неправильное значение ”

кц при Ь > 0 и Ь <= К и Ь

7—1523

Новое значение п

Проверяем, не закончилась ли игра

Игра закончилась

Определяем победителя

2

” Последний предмет взяли Вы, т . е . выиграл компьютер ! ”

нс, ” Последний предмет взял компьютер,

                             т . е . Вы выиграли      поздравляем! ”

Игра продолжается

” Осталось предметов :

Изменяем величину р

(следующий ход делает другой участник игры) если р = 1

2

1

Предлагаю читателям исследовать другой вариант игры Баше, в котором игрок, взявший во время своего хода оставшиеся предметы, выигрывает. Определите выигрышную тактику для такой игры и разработайте программу, моделирующую игру компьютера и человека.

Приходит программист к окулисту. Тот его усаживает напротив таблицы с буквами, берет указку:

— Читайте этот ряд букв!

БНОПНЯ... Доктор, у вас что-то не то с кодировкой!


Лабиринты

Вспомним веселую историю , рассказанную английским писателем Джеромом К. Джеромом в книге «Трое в одной лодке, не считая собаки» (если вы ее еще не читали, то обязательно прочитайте). Сколько читателей смеялось над чудаком Гаррисом, попавшим в Хемптон-Кортский лабиринт!

«Мы только зайдем сюда, чтобы ты мог сказать, что побывал в лабиринте, но это совсем не сложно. Даже нелепо называть его лабиринтом. Мы походим здесь минут десять, а потом отправимся завтракать» , — уговаривал Гаррис своего родственника.

Но увы! Гаррис не только заблудился сам, но и запутал людей, которых взялся избавить от мучительного блуждания по лабиринту. За ним следовало, по крайней мере, человек двадцать и даже одна женщина с ребенком, безуспешно искавшая выход из лабиринта все утро.

Следуя своей тактике, Гаррис все время поворачивал направо. Ему казалось, что он вот-вот выберется из лабиринта. Но время шло, и... вся компания во главе с Гаррисом вернулась к тому мес-

Впрочем, с лабиринтами связаны и трагические истории. Например, в Древнем Египте, чтобы предотвратить расхищение сокровищ из пирамид, в них создавали лабиринты; идя по ним, похитители часто не могли найти выход и умирали там от голода и жажды...

 

196

ту, где они уже были. Половинка печенья, брошенная ребенком и замеченная родственником Гарриса за семь минут до этого, с несомненностью указывала место их недавнего пребывания.

Тогда Гаррис предложил вернуться назад и начать всё снова. Предложение начать снова особого энтузиазма не вызвало, но все согласились вернуться.

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

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

Заметим, что бедному Гаррису не пришлось бы так долго блуждать по лабиринту и мучить людей, если бы он знал алгоритм поиска путей в лабиринте. Таких алгоритмов существует несколько, и один из них описан в двух следующих разделах.

13.1. Нить Ариадны

Греческие мифы повествуют о легендарном герое Тезее, который отважился проникнуть в лабиринт на острове Крит, чтобы разыскать в нем чудовищного Минотавра и убить его. Ему помогла выбраться из лабиринта Ариадна, давшая Тезею клубок ниток, один конец которого она держала в руке. Пока Тезей все дальше уходил в лабиринт, клубок разматывался; идя потом вдоль «путеводной» нити, Тезей благополучно вернулся к выходу.

Представим себе лабиринт в виде конечной системы площадок, от которых расходятся коридоры. При этом каждый коридор может соединять две площадки (такие площадки мы будем называть смежными), но не исключается и существование таких площадок, из которых можно пройти только в один коридор (такие площадки мы будем называть тупиками). Геометрически лабиринт можно представить в виде системы точек А, В, С, ... (изображающих площадки) и совокупности отрезков АВ, ВС, ... (изобраэкающих коридоры), которые соединяют некоторые пары этих точек (рис. 13.1).

Будем говорить, что площаДка У Достижима из площаДки Х, если существует путь, ведущий от Х к У, в том числе через промежуточные коридоры и площадки. Точнее, это означает, что либо Х и У — смежные площадки, либо существует последовательность таких площадок Х 1, Х2, Хз, хп, что пары площадок

м

Рис. 13.1

хп и У смежны. Например, на рис. 13.1 площадка Н достижима из тупика А посредством пути АВ, ВС, CD, DE, ЕЕ, FD, DH, в то время как площадка К недостижима из А. Вместе с тем, если У вообще достижима из Х, то она достижима и посредством простого пути — такого, в котором каждая площадка (а тем более — каждый коридор) проходится лишь один раз. В предыдущем примере путь не был простым, но, «срезав» петлю DE, ЕР, FD, мы получаем простой путь А В, ВС, CD, DH. Наиболее же короткий простой путь будет таким: АВ, ВД оН.

Предположим теперь, что Минотавр находится на одной из площадок лабиринта (обозначим ее как М), а Тезей, отправляясь на его поиски с площадки А (на которой его ждет Ариадна), должен выяснить, достижима М из А или нет . Если достижима, то нужно добраться до нее по любому пути, но вернуться к Ариадне нужно уже по простому пути. Если же М недостижима, то достаточно вернуться к Ариадне.

Различных лабиринтов может быть бесчисленное множество, да и взаимное расположение в данном лабиринте площадок А и М также можно варьировать. Поскольку Тезею заранее ничего не известно об устройстве лабиринта и о местонахождении в нем Минотавра, то решение подобной задачи возможно только в виде общего метода поисков, пригодного при любом лабиринте и при любом расположении в нем площадок А и М. Иными словами — в виде алгоритма, решающего любую из задач данного типа (именно в этом, как известно, заключается такое свойство алгоритма, как массовость!).

Алгоритм поиска. Для построения такого алгоритма рассмотрим один специальный метод поисков. В соответствии с ним, на любой стадии процесса поиска потребуется различать коридоры:

1)еще ни разу не пройденные Тезеем (условно назовем их «зелеными»);

Естественно считать, что М А.

 

198

2)пройденные один раз («желтые»); З) пройденные дважды («красные»).

Находясь на какой-либо площадке, Тезей может попасть на одну из смежных площадок посредством одного из следующих двух ходов (действий):

1)                       разматывание нити — проход от данной площадки по любому «зеленому» коридору до смежной площадки; при этом нить Ариадны разматывается вдоль этого коридора, который после его прохождения уже считается «желтым» ;

2)                       сматывание нити — возвращение от данной площадки по последнему пройденному «желтому» коридору до смежной площадки. При этом нить Ариадны, ранее размотанная вдоль этого коридора, сматывается обратно в клубок, а этот коридор уже объявляется «красным» .

Предполагается, что Тезей делает на стенах какие-то пометки, позволяющие ему впоследствии отличать «зеленые» коридоры от «красных»; «желтые» коридоры отличаются тем, что по ним протянута нить Ариадны . Выбор же того или иного хода зависит от обстановки, наблюдаемой Тезеем на площадке, на которой он в данный момент находится; эту обстановку можно охарактеризовать одним или несколькими из следующих признаков: 1) Минотавр — на данной площадке обнаружен Минотавр;

2) петля через данную площадку уже протянута нить Ариадны; иными словами, от площадки расходятся по крайней мере два «желтых» коридора;

З) зеленая улица — на данной площадке есть выход по крайней мере в один «зеленый» коридор;

4)                  Ариадна — на данной площадке находится Ариадна;

5)                  «пятый случай» — отсутствие всех предыдущих признаков. Наш метод поиска теперь может быть задан схемой, показанной в табл. 13.1.

Таблица 13.1

Признак

ход

1. Минотавр

Остановка

2. Петля

Сматывание нити

З. Зеленая улица

Разматывание нити

4. Ариадна

Остановка

5. Пятый случай

Сматывание нити

Гаррис герой книги Джерома К. Джерома мог бы использовать для пометки различных коридоров кусочки печенья

Находясь на какой-нибудь площадке, Тезей делает очередной ход так: он проверяет по порядку номеров в левом столбце схемы, какой из перечисленных признаков имеет место; обнаружив первый такой признак, он (уже не проверяя остальные признаки), делает соответствующий ход, указанный в правом столбце (или останавливается). Такие ходы делаются до тех пор, пока не наступит остановка.

Пригодность предложенного метода непосредственно вытекает из следующих трех утверждений.

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

2.                       Если остановка наступила на площадке Минотавра, то Минотавр достижим. Более того, в этом случае нить Ариадны оказывается протянутой по простому пути, ведуицему от А до М; сматывая нить, Тезей может теперь вернуться по этому пути к Ариадне.

З. Если остановка наступила на площадке Ариадны, то это означает, что Минотавр недостижим.

С доказательством этих утверждений можно познакомиться, например, в [22]. А мы рассмотрим на двух примерах, как работает предложенный метод.

Пример 1. Пусть с площадки А лабиринта (см. рис. 13.1) начинается поиск Минотавра, который находится в точке Е. Процесс поиска, в соответствии с нашим методом, удобно изобразить посредством схемы, представленной в табл. 13.2 (из-за свободы в выборе «зеленого коридора» это лишь одна из возможных таких схем).

Таблица 13.2

Порядковый номе хода

Каким признаком руководств ется Тезей

Ход

Пройденный ко идо

«Цвет» коридора после его п охоэкдения

1

Зеленая лица

Разматывание

АВ

Желтый

2

Зеленая лица

Разматывание

вс

Желтый

з

Зеленая лица

Разматывание

СП

Желтый

4

Зеленая лица

Разматывание

он

Желтый

5

Зеленая лица

Разматывание

нег

Желтый

6

Пятый сл чай

Сматывание

еЈН

К асный

7

Пятый сл чай

Сматывание

 

Красный

8

Зеленая улица

Разматывание

 

Желтый

9

Петля

Сматывание

 

К асный

10

Зеленая улица

Разматывание

 

Желтый

11

Минотавр

Остановка

 

 

 

 

 

 

200

 

 

Мы видим, что в данном случае Минотавр достижим. Выделив же в предпоследнем столбце коридоры, которые остались «желтыми» (в соответствии с записями в последнем столбце), мы получим следующий простой путь, ведущий от А к Е: АВ, ВС, СО, DF.

Пример 2. Если поиск начинается с площадки К (а Минотавр по-прежнему находится на площадке Е), то процесс поиска можно отразить схемой, представленной в табл. 13.3.

Таблица 13.3

Порядковый номер хода

Каким признаком руководствуется

Тезей

Ход

Пройденный коридор

Цвет коридора после его прохождения

1

Зеленая улица

Разматывание

КАТ

Желтый

2

Зеленая улица

Разматывание

 

Желтый

з

Зеленая улица

Разматывание

 

Желтый

4

Зеленая улица

Разматывание

 

Желтый

5

Петля

Сматывание

ЛТМ

Красный

6

Пятый случай

Сматывание

 

Красный

7

Пятый случай

Сматывание

 

Красный

8

Пятый случай

Сматывание

 

Красный

9

Ариадна

Остановка

 

 

Как видим, в этом случае Минотавр недостижим,

Заметим, что описанный алгоритм не обладает свойством опреДеленности — с какой-то площадки могут оказаться выходы в несколько зеленых коридоров, а наше предписание не указывает, какой из них выбрать (точнее, оно допускает произвольный выбор одного из них). Чтобы это свойство соблюдалось, необходимо регламентировать, как должен производиться выбор очередного проверяемого коридора в таких ситуациях. Алгоритм, в котором такая регламентация имеется, описан в следующем разделе.

Задание

Составьте схему выхода из лабиринта (с площадки 1 на площадку 10 — см. рис. 13.2), используя описанный в этой статье алгоритм.

При наличии на площадке выходов в несколько зеленых коридоров их выбор должен осуществляться по часовой стрелке.

Схемы оформите в виде таблиц, аналогичных табл. 13.2 и 13.3.

1

10

8

Рис. 13.2

13.2. Лабиринт из комнат

Имеется лабиринт — система комнат, которые соединены коридорами (рис. 13.3).

Рис. 13.3

Комнаты пронумерованы числами от 1 до 16. Будем считать, что посетитель, попавший в любую такую комнату, знает, в комнату с каким номером ведет тот или иной коридор. Предположим также, что у него (как и у Тезея) есть клубок ниток, один конец которого можно закрепить в исходной комнате.

Алгоритм нахождения пути из одной комнаты в другую будет следующим. При продвижении вперед надо всегда переходить в новую комнату с возможно меньшим номером (разматывая нить). Если при таком движении мы попадаем в тупик или в комнату, по которой уже прошли ранее, то нужно идти назад в предыдущую комнату (сматывая нить), а оттуда — двигаться в комнату со следующим по величине номером (из числа тех, через которые еще не прошел наш маршрут). Если же это невозможно, то надо вернуться в комнату перед предыдущей, по-прежнему сматывая нить, и т. д.

 

202

Задание

Используя этот алгоритм, найдите путь из комнаты 1 в комнату 16.

13,3. Мышь в лабиринте

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

13.4. Разные лабиринты

Попробуйте пройти в центр лабиринта, показанного на рис. 13.4.

Рис. 13.4

Прошли? Тогда предлагаю еще один лабиринт (рис. 13.5).

 

 

 

 

 

пае па пап

пав

 

вход

 

Рис. 13.5

И наконец, еще два самых сложных лабиринта (рис. 13.6 и 13.7).

На рис. 13.6 цель показана в виде точки внутри лабиринта, а на рис. 13.7 места входа и выхода указаны стрелками.

Рис. 13.6

204

Рис. 13.7

Папа и дочка рисуют. Только дочка рисует в альбоме, а папа — в Photoshop'e.

Дочка: «Папа! Папа! Я случайно разлила краску на лист» .

Папа: «Ты только ничего не трогай, а сразу жми Правка и Отменить» ,

— Папа, а что такое ноты?

— Это МП)1-файл, но только на бумаге.


Софизмы и парадоксы

                                                                               Так так —а           то а = Ь.

                                                                                              2       2

Тогда, так как полупустой стакан равен полуполному, то пустой стакан равен полному.

Вы, конечно, знаете, что логика — это наука о формах и законах мышления. Ее законы отражают в сознании человека свойства, связи и отношения объектов окружающего мира. Свое понимание окружающего мира человек формулирует в форме высказываний (суждений, утверждений). Знаете вы и о том, что на электронных логических элементах основана работа компьютера.

Логика это достаточно сложная наука, а человеческий мозг — не компьютер. Ошибиться очень просто, особенно в запутанных логических формулах. Но очень часто люди допускают и преднамеренные ошибки в своих рассуждениях с целью запутать или ввести в заблуждение собеседника. Такие «ошибки» называют софизмами (от греческого s6phisma — уловка, ухищрение, выдумка, головоломка).

 

206

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

14.1. 4 руб. = 40 ООО коп.

«Доказательство» . Возьмем верное равенство: 2 руб. 200 коп. и возведем его по частям в квадрат. Получится: 4 руб. = 40 ООО коп.

14,2. 2х 2 = 5

«Доказательство» . Имеем числовое тождество: 4 : 4 = 5 : 5. Вынесем и в левой, и в правой его части за скобки общий множитель: 4(1 : 1) = 5(1 : 1). Числа в скобках равны — их можно сократить. Получим: 4 5.

14.3.

«Доказательство». Вычтем из обеих частей равенства число З: 5—3 = 1 — З. Получим: 2 2. Возведя в квадрат обе части последнего равенства, получим: 4 = 4. Так как данное равенство справедливо, то справедливо и исходное равенство 5 1.

14.4.        з

«Доказательство». Возьмем равенство: 4 — 10 = 9 — 15. Прибавив к обеим его частям значение 6 Л, получим: 4 — 10 + 6 1 /4 9 - 15 + 6 1 /4.

Выполним преобразования:

        22       2 х 2 х 0 /2 + ( 0 /2)2       32      2 х 3 х 5 /2 + ( 0 /2) 2•

Отсюда

            (22)2            ( 3 0 /2) 2 .

Извлекая из обеих частей этого равенства квадратный корень, получим:

   2    - 3

Прибавляя теперь к обеим частям по / 2, приходим к равенству: 2 = 3.

14.5.

«Доказательство» . Возьмем числовое тождество: 35 + 10 — 45

42 + 12 — 54. Вынесем общие множители левой и правой частей за скобки: 5(7 + 2 — 9) = 6(7 + 2 — 9). Разделим обе части этого равенства на общий множитель (в скобках). Получим: 5 = ба

Решим ее способом подстановки. Получим: 4 — у + у = 8, т. е. 4 = 8.

14.7. все числа равны между собой

«Доказательство» . Пусть т * п. Возьмем тождество: т 2 — 2mn +  п 2 — 2nm + т 2 . Тогда (т — п) — (п — т) 2 . Отсюда т — п = п — т, или 2n = 2m. Значит, п = т.

14,8. Любое отличающееся от нуля число равно противоположному ему числу

«Доказательство». Возьмем произвольное отличающееся от О число а. Обозначим его буквой х: х = а. Обе части этого равенства умножим на —4а. Получим: —4ах = —4а 2 , или —4ах + 4а 2 = О. К обеим частям этого равенства прибавим х 2 . Получим: х 2 — 4ах + + 4а 2 =х , или (х — 2а) 2 = х 2 . Значит, х — 2а = х. Но х = а, поэтому а — 2а = а, или —а = а.

14.9. Любое число а равно меньшему числу Ь

«Доказательство» . Начнем с равенства: а = Ь + с. Из него следует, что а больше Ь при с > О. Умножив обе его части на а — Ь, получим:

             2                                                 2

      а    ab = ab + ас — Ь    bc.

Перенесем ас в левую часть:

             2                                                2

а ab — ас = ab — Ь и в обеих частях равенства вынесем общий множитель: а(а — Ь — с) = Ща — Ь — с).

Разделив обе части этого равенства на (а — Ь — с), получим, что

14.10. Любое число равно своей половине

«Доказательство». Возьмем два равных числа а и Ь: а = Ь. Обе части этого равенства умножим на а и затем вычтем из них по Ь2

Получим: а 2 — b 2 ab — b 2 , или (а +       — Ь) = Ца — Ь). Отсюда

а а + Ь = Ь, или а + а = а, так как Ь = а. Значит, 2а = а, или а — —.

2

208

14.11. Отрицательное число больше положительного

«Доказательство» . Возьмем два положительных числа — а и Ь. Сравним два отношения: — и ——. Они равны, так как каждое из

а

них равно— . Тогда мы можем составить пропорцию:. но

если в пропорции предыдущий член первого отношения больше последующего, то и предыдущий член второго отношения больше своего последующего. В нашем случае а > —6. Следовательно, должно выполняться и неравенство —а > Ь, т. е. отрицательное число больше положительного.

14,12, Любое число равно числу, в два раза большему его

«Доказательство» . Пусть а — любое число. Возьмем тождество: а — а = а — а . В левой его части вынесем а за скобки, а правую часть разложим на множители по формуле разности квадратов. Тогда получим: (а — а)а = (а — а)(а + а). Упростив это тождество, получим, что а = 2а.

14,13. Любое число равно нулю

«Доказательство» . Каким бы ни было число а, справедливы равенства: (+а)2 = а 2 и (—а)2 а2 . Следовательно, (+а)2 = (—а) 2 . Значит, +а = —а, или а + а = О. Но тогда 2а = О, и поэтому а = О.

14.14.

                                                                                                              2                з

                                                    1      1

«Доказательство». Очевидно, что  Логарифмируя 2  2

обе части этого неравенства, получим:

1

21g- > 31g-. 2

Деля обе его части на одно и то же значение lg—, получим, что

14.15. вес слона равен весу комара

«Доказательство». Обозначим вес слона как с, а вес комара как К. Запишем равенство:

                                                                                     (1)

 

209

Действительно, такое число v всегда существует. Например, при условных значениях с = 5000 кг и К = 0,0000001 кг число v равно 2500,00000005 кг.

Тогда из равенства (1) можно получить два других: с — 20 — —К и c = 2v — К.

Попарно перемножим левые и правые части этих равенств:

              2                          2

2vc = К - 2vk.

Добавим к обеим частям только что полученного равенства значение v .

                           2 — 2vc + v2                                 К 2 — 2vk + 02.

Тогда мы можем записать:

(с — — (К — v)2 ,

Извлекая квадратный корень из обеих частей этого равенства, получим :

Отсюда с = К, т. е. вес слона равен весу комара!

14.16. Хитрый хозяин гостиницы

В нижеследующем стишке, взятом из одного английского журнала, выходившего в XIX веке, рассказывается о хитром хозяине гостиницы, сумевшем разместить в девяти номерах десять гостей так, что каждому из них досталось по отдельной комнате.

Их было десять чудаков,

Тех спутников усталых, Что в дверь решили постучать Таверны «Славный малый».

 Пусти, хозяин, ночевать,

Не будешь ты в убытке,

Нам только ночку переспать, Промокли мы до нитки.

Хозяин тем гостям был рад, Да вот беда некстати:

Лишь девять комнат у него И девять лишь кроватей,

— Восьми гостям я предложу

Постели честь по чести,

А двум придется ночь проспать В одной кровати вместе.

 

210

Лишь он сказал, и сразу крик,

От гнева красны лица:

Никто из всех десятерых

Не хочет потесниться.

Как охладить страстей тех пыл, Умерить те волненья?

Но старый плут хозяин был И разрешил сомненья.

Двух первых путников пока,

Чтоб не судили строго,

Просил пройти он в номер «А»

И подождать немного.

Спал третий в «Б», четвертый в «В»,

В «Г» спал всю ночь наш пятый, В «Д», «Е», «Ж», «З» нашли ночлег С шестого по девятый.

Потом, вернувшись снова в «А»,

Где ждали его двое,

Он ключ от «И» вручить был рад Десятому герою.

Хоть много лет с тех пор прошло,

Неясно никому,

Как смог хозяин разместить Гостей по одному?

Иль арифметика стара,

Иль чудо перед нами, Понять, что, как и почему, Вы постарайтесь сами!

14.17. Парадокс «Куча»

Разница между кучей и «не-кучей» — не в одной песчинке. Пусть у нас есть куча (например, песка). Начнем брать из нее каждый раз по одной песчинке — куча останется кучей. Продолжим этот процесс, Если 100 песчинок — куча, то 99 тоже куча,

10 песчинок        куча, то 9 — тоже куча,        З песчинки — куча,

2 — куча, 1       куча

Суть этого парадокса в том, что постепенные количественные изменения (убывание на одну песчинку) в нем не приводят к качественным изменениям. Или, что то же самое, в постановке вопроса: когда куча перестает быть кучей?


Задание

Сформулируйте парадокс «Лысый» , аналогичный парадоксу «Куча» .

14.18. Парадокс «Мэр города»

Каждый мэр живет или в своем городе, или вне его. Однажды был издан приказ о выделении одного специального города (ну, скажем, столицы 9), где жили бы только мэры, не живущие в своем городе. Естественно, у этого города тоже есть свой мэр.

Где должен жить мэр этого города? Если он хочет жить в этом «специальном» городе, то он не может этого сделать, так как там живут только мэры, не живущие в своем городе. Если же он не хочет жить в «специальном» (своем!) городе, то, как и все мэры, не живущие в своих городах, он должен жить в «специальном» городе, а это, как сказано выше, не допускается. Поэтому получается, что этот мэр не может жить ни в своем городе, ни вне его.

Задание


Закончите два следующих парадокса.

14.19, Парадокс «Генерал и брадобрей»

Каждый солдат может сам себя брить или бриться у другого солдата. Генерал издал приказ о выделении одного специального солдата-брадобрея, у которого брились бы только те солдаты, которые сами себя не бреют. У кого должен бриться сам этот СПеЦИально выделенный солдат? Если...

14,20. Парадокс «Каталог всех нормальных каталогов»

Книжный каталог (перечень книг и других каталогов) может быть двух видов:

1)                       такой, который в числе перечисляемых каталогов не упоминает себя («нормальный»);

2)                       такой, который сам входит в число перечисляемых в нем каталогов («ненормальный»).

Библиотекарю дали задание составить каталог всех нормальных и только нормальных каталогов. Должен ли он при составлении своего каталога упомянуть и составленный им каталог? Если...

Жаргонизмы Интернета

Жаргонизм жаргонное слово или выражение.

Ожегов С. И. Толковый словарь русского языка.

В информатике, как и во многих других отраслях науки и техники, есть свои термины-жаргонизмы. Например, винт (винчестер) —жесткий магнитный диск; хард — совокупность аппаратных средств компьютера (hardware); софт программное обеспечение (software) и др. Есть такие термины и у пользователей Всемирной компьютерной сети Интернет спам, собака, смайлик и др.

15.1. Откуда пришла «собачка»?

Сегодня знак @ является одним из символов всемирного коммуникационного пространства. Какова же история появления этого знака в адресе писем электронной почты — одной из самых распространенных услуг, предоставляемых пользователям сети Интернет?

Поиски истоков символа @ уводят нас, по меньшей мере, в XV столетие, а возможно — еще дальше в глубь веков, хотя лингвисты и палеографы до сих пор расходятся во мнениях по этому вопросу. Однако сначала обратимся к более близким временам.

Точная дата рождения электронной почты неизвестна. Специалисты по истории высоких технологий относят ее примерно к концу 1971 года, когда 30-летний американский компьютерный инженер Рэй Томлинсон реализовал нечто, что сам затем назвал «быстрым захватом» («quick hack»). На самом деле ему удалось послать первое в истории электронное сообщение на адрес (принадлежавший ему же), зарегистрированный на другом компьютере. Томлинсон и был тем самым человеком, который выбрал символ (Ф в качестве разделителя между именем пользователя и именем компьютера в записи адреса электронной почты. Когда уже в наши дни его спросили, почему он выбрал именно этот значок, он ответил просто: «Я искал на клавиатуре знак, который не мог встретиться ни в одном имени и вызвать путаницу» . Однако этот символ уже тогда имел определенное назначение — по крайней мере, в английском языке он использовался как сокращение от at (читается как «эт»).


Как же получилось, что знак @ оказался на одном из первых мест на клавиатуре компьютера? Ведь прежде чем Томлинсон отдал ему предпочтение, у него, наверное, было какое-то другое конкретное назначение? Чтобы найти ответ на этот вопрос, нам и придется углубиться в историю.

Американский ученый Бертольд Уллман 70 лет назад выдвинул предположение, что знак @ был изобретен средневековыми монахами, Он утверждает, что этот знак понадобился им в качестве сокращения для латинского «ad» — часто употребляемого универсального слова, означающего «на», «в», «в отношении» и т. п. Однако реальные доказательства, подтверждающие эту гипотезу, остаются очень скудными.

До недавних пор большинство лингвистов полагали, что знак @ имеет более позднее происхождение и появился на свет в XVIII столетии в качестве символа, указывающего стоимость единицы товара, например «5 яблок @ 10 пенсов» (5 яблок при цене 10 пенсов за 1 яблоко). Французский исследователь Дэнис Музерелли считает, что этот знак появился в результате того, что букву «а» французские и немецкие купцы второпях писали как @. Однако в 2000 году другой специалист по истории языка,

Лингвист — специалист по лингвистике (науке о языке).

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


214

Джорджио Стабиле из Римского университета, обнаружил венецианские коммерческие документы, датированные примерно 1500 годом, в которых символ @ использовался для обозначения меры объема — амфоры. Стабиле также нашел латино-испанскиЙ словарь 1492 года, в котором слово «амфора» (anfora) переводилось как «арроба» (arroba) — мера веса, равная примерно 12,5 кг. Это слово, скорее всего, произошло от арабского ar-roub, которое опять же означало некую единицу измерения, а именно «четверть» . Все эти исследования показывают, что знак Ф) существует с XV столетия, как в испано-арабских, так и в греко-романских языках в качестве коммерческого символа, использовавшегося для обозначения единиц измерения товара, хотя в разных регионах он означал разные величины. Это проливает некоторый свет и на появление «коммерческого эт» (@) на клавиатуре первой пишущей машинки — этот значок присутствовал уже на первой модели, выпущенной компанией Underwood в 1885 году. Значку @ удалось «выжить», и 80 лет спустя он был включен в стандартный набор компьютерных символов.

Что русским — «собачка», финнам — «кошка»

Пожалуй, наибольшее удивление в истории символа @ вызывает то, как в наши дни он произносится и что означает на разных языках. Испанцы и португальцы по-прежнему используют слово «арроба», которое французы у них «одолжили» и переделали в «аробаз» (arobas). Американцы и британцы, конечно же, называют его «знак эт» (at sign). Это же словосочетание в различных вариациях было перенесено в другие языки, например в немецкий (at Zeichen), эстонский (at miirk) и финский (at merkki), или перешло в более простую форму «at». Однако в большинстве языков этот символ описывается с помощью всевозможных метафор, взятых из повседневной жизни, и наиболее характерным является упоминание животных. Голландцы, немцы, венгры, поляки и африканцы видят в нем «обезьяний хвост». «Улиткой» (поанглийски snail) знак @ называют во Франции (escargot) и Италии (chiocciola), а также на иврите, корейском и эсперанто (heliko). Парадоксально, что при этом термин snail mail (буквально «улиточная почта» или «черепашья почта») на компьютерном жаргоне означает как раз традиционную «бумажную» почту как более медленную альтернативу электронной. Датчане и шведы называют этот знак snabel-a («слоновий хобот» с буквой «а» на конце); венгры «червяком»; норвежцы «свиным хвостом»; китайцы «мышонком», а русские «собакой» (или «собачкой»). Еще одним богатым источником названий для @ является пища. Некоторые шведы предпочитают «булочку с корицей» (kanelbulle). Чехов же воодушевил «селедочный рольмопс»

(zavinac), подаваемый в пражских барах. Испанцы иногда называют знак @ словом ensaimada — конфетой, имеющей форму спирали, которую обычно делают на Майорке. А на иврите часто используется слово shtrudel («штрудель»), означающее всем известное кондитерское изделие. Но, наверное, самое «подходящее по внешнему виду» название — это финское слово miukumauku, означающее свернувшуюся калачиком спящую кошку...

И все-таки — почему «собачка»?

И все-таки остается вопрос — почему в русском языке символ @ назвали «собачкой» ? Одна из версий происхождения этого названия (кроме того, что сам знак напоминает свернутый «бубликом» собачий хвост) такова. Когда-то давно, когда компьютерные дисплеи еще не «умели» воспроизводить графику (были чисто текстовыми), уже создавались первые компьютерные игры. Одна из таких игр заключалась в поисках клада в лабиринте, заполненном множеством врагов и опасностей. При этом картинка на экране представляла собой фрагмент этого лабиринта на «виде сверху», изображенный при помощи символов «!» , «—» и «+» для стенок и углов, а различные враги и предметы, как и сам играющий, тоже отображались в виде каких-то символов. Причем у главного персонажа (за которого и предлагалось играть) был помощник — собачка, которую можно было «отправить вперед себя на разведку» . Говорят, что эта собачка в данной игре как раз изображалась символом @, и вот именно с тех пор за этим значком осталось его игровое название...

15.2. Что такое «спам»

Понятие «спам» знакомо, пожалуй, каждому, кто пользуется электронной почтой. Достаточно пару раз побывать на какомнибудь форуме или указать свой адрес на каком-нибудь webсервере, и в ваш ящик начнут приходить письма «Вам чрезвычайно повезло!» , «Хотите заработать много денег? » , «Купите наш замечательный продукт!» или «Посетите наш замечательный сайт!» , Это и есть спам. Многие думают, что слово «спам» означает мусор, Но это не так.

Слово SPAM произошло от «SPiced hAM» — «колбаса (ветчина) со специями» . В 30-х годах прошлого века это слово было введено в обиход как торговая марка английской фирмы Hormel, выпускавшей мясные консервы низкого качества. Чтобы продать большое количество скопившегося на ее складе мяса, она в 1937 г. провела массовую рекламную кампанию (ясно, что недобросовестную), распихивая в почтовые ящики (тогда еще не электронные) добропорядочных граждан свои рекламные листов-

ки. Консервы были проданы, но слово «спам» вошло в историю и даже было занесено в Оксфордский словарь.

15.3. Смайлики

Вы, наверное, знаете, что при общении в Интернете часто используются смешные рожицы — так называемые смайлики (smile по-английски «улыбка»), или, как их еще называют, эмотиконы. Поэтому вам наверняка будет интересно и / или полезно познакомиться с некоторыми из них (в количестве 93 штук см. табл. 15.1.

Таблица 15.1

или : )

Улыбка

или : о)

Клоун

 

Улыбка до ушей

 

Носящий тюрбан

 

Задорная улыбка

 

В наушниках

или  

Шутливая улыбка

 

С галстуком- бабочкой

или

Грустный

 

Широко раскрытые

( « мультяшные» ) глаза

или •

Равнодушный; думающий

 

Банкир

 

Панк

 

Повар

или

Саркастическая физиономия

 

Священник

или

То же плюс подмигивание

 

Папа Римский

 

Злодей

 

Святой

>;—>

Шутливый злодей

 

Носящий пенсне

 

Пытающийся достать языком до носа

 

Четыре глаза

 

То же самое, но с другой стороны

 

Очки на лбу

 

Разочарованный

 

Волосы дыбом

 

Лишившийся дара речи; смутившийся

: -х

Рот на замке

 

Высовывающий язык

 

Громкий смех

: -s

Непоследовательный, бессвязный

 

Лодырь

 

Скептик

 

Носящий парик

 

Не решившийся

 

Парик дыбом

 

Ангел

 

Кривая улыбка

 

Дьявол

 

Поцелуй

 

«Ох-ох»

 

Орущий

 

Облизывающий губы

 

Спящий

 

«Не ори!» (либо оратор) или сильное удивление

 

Зевающий

 

Циклоп

 

Храпящий

 

Просто одноглазый

 

Мутант

 

Подмигивающий одноглазый

 

Два носа

 

Очень долго таращившийся на экран

 

Труп

8-)

Носящий солнечные очки

 

Замерзший

в-)

Носящий очки

 

Пьяный

 

Забавно выглядящий нос

 

Тупица

 

Маленькая девочка с бантиком

(-1

ЯЙцеголовыЙ

 

С накрашенными губами

 

чуб

8-1

Встревоженный

 

Болван

 

Валяющий дурака

 

Печальный

 

Плачущий от счастья

:—t

Злой

 

В колпаке

Деда Мороза

 

Полуулыбка

 

Вампир

 

Потрескавшиеся губы или ухмылка

 

Клыкастый вампир

 

Сломанный нос

 

Он же с обломанным клыком

 

Курящий

< l -)

Китаец

 

Курящий трубку

 

Не понимающий таких шуток китаец

 

Сплевывающий

(8—0

С похмелья

 

Роза

Интересно, что в Восточной Азии принят другой стиль написания смайликов, который носит название «каомоДзи». Такие смайлики не обязательно «поворачивать набок», чтобы прочитать их, а само «изображение» на смайлике показывает в основ-

 

218

ном глаза, а не рот «условного персонажа», подобно рисункам в стиле «манга» или «аниме». Вот несколько примеров таких смайликов.

 

Улыбка

 

Сонный

 

Грусть

 

Плачущий

 

Злость

 

Мертвый

 

Сконфуженность

 

Кошка

 

Удивление

 

Поцелуй

В заключение заметим, что первым идею о небходимости «придумать» какой-нибудь типографский знак, обозначающий улыбку, высказал еще в 1969 году писатель Владимир Набоков в одном из своих интервью, а днем рождения смайлика считается 19 сентября 1982 года. В этот день исследователь фирмы IBM Скотт Фалман впервые вставил в электронное сообщение набор символов

Чем отличается программист от простого пользователя? Пользователь думает, что в килобайте 1000 байтов, а программист думает, что в километре 1024 метра.

Работа программиста и шамана имеет много общего оба бормочут непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.

Переписка двух заядлых «интернетчиков»:

— www . zarplaty. net?

— www . Ка К. vsegda . net!

— www . Ка К. zhe . уа .domoy . ро . edu? — www . pesh. сот!


16 Задачи о шапках

Чтобы человек узнал некоторую информацию о себе, не обязательно сообщать ее в явном или в зашифрованном виде. Иногда достаточно сообщить ему аналогичную информацию о другом человеке (см. задачи 16.1—16.2 и 16.4) или вообще промолчать (см. задачу 16.3)...

16.1. Приятели и их шапки

Три приятеля: Антон, Борис и Виктор сидели друг за другом без головных уборов (см. рис. 16.1), причем Борису и Виктору было запрещено оглядываться назад, Борис видел голову сидящего внизу Виктора, а Антон — головы обоих своих приятелей.

Из мешка, содержащего две белые и три черные шапки (о чем все трое были заранее осведомлены), достали и надели каждому из ребят шапку неизвестного (для ее владельца) цвета, а еще две шапки неизвестных (для всех) цветов остались в мешке.

Антон заявил, что он не может определить цвет свой шапки. Борис услышал ответ Антона и сказал, что у него тоже не хватает данных для определения цвета шапки, находящейся у него на голове.

Мог ли Виктор на основании этих ответов своих приятелей определить цвет своей шапки?

 

220

16.2, Те же приятели и те же шапки

А теперь решите задачу о приятелях и их шапках, так сказать, «в общем виде». Пусть каждого из мальчиков спросили, может ли он определить цвет своей шапки. Сможет ли тогда Борис на основе ответа Антона определить цвет своей шапки? Сможет ли Виктор на основе ответов Антона и Бориса определить цвет своей шапки? Рассмотрите все возможные варианты ответов Бориса и Антона.

16.3. Зачет по логике

Как-то раз преподаватель логики сказал трем своим студентам: «У меня здесь есть 5 шапок: З белых и 2 черных. Закройте глаза, и я надену каждому из вас шапку. Когда вы откроете глаза, то сможете увидеть, какого цвета шапки на ваших товарищах. Свою собственную шапку вы увидеть не сможете и не увидите, какие шапки у меня остались, я их уберу. Тот, кто сумеет догадаться, какого цвета на нем шапка, сразу же получит зачет по логике» .

Через некоторое время, не обменявшись ни единым словом, все студенты закричали: «На мне белая шапка!» . Пришлось преподавателю всем троим поставить зачет. Как они об этом догадались?

16.4. Умный сговор

В зале с несколькими ярусами находятся п гномиков. Их посадили в одну колонну друг за другом так, что каждый видит всех сидящих впереди перед ним, но не видит находящихся сзади него (см. рис. 16.2).

221

16. Задачи о шапках

Рис. 16.2

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

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

Если каждый гномик будет отвечать наугад (вероятность угадывания — 50 0/0 ), то общая сумма полученных всеми гномиками денег составит в среднем п/2 рублей. Вместе с тем, если гномики заранее договорятся о правилах ответа, то их выигрыш может быть и больше. Как им сговориться, чтобы гарантированный суммарный выигрыш был максимальным? Каким будет этот выигрыш?

16.5. Три коробки

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


Шутки и розыгрыши на компьютере

Одна улыбка продлевает жизнь человека на три минуты, а пять секунд смеха — на 1 час.

МеДицинский факт

17.1. «Фальшивый» рабочий стол Windows

Хотите подшутить над своими близкими дома или над одноклассником в компьютерном классе? Тогда сделайте следующее.

1.                  Нажав клавишу PrintScreen, скопируйте в буфер весь экран в тот момент, когда на нем представлен рабочий стол Windows.

2.                  Запустите любой графический редактор и в нем вставьте сохраненное в буфере обмена изображение рабочего стола. Сохраните файл в любой папке на диске. В результате у вас имеется точная копия рабочего стола вашей «жертвы» со всеми папками, ярлыками, кнопкой Пуск и т. д. Эту копию надо теперь будет использовать в качестве «обоев» рабочего стола. (Единственное,

«Медицинский факт» — фраза, сказанная Остапом Бендером, всем известным героем романов И. Ильфа и Е. Петрова.

17 . Шутки и розыгрыши на компьютере                                                     223

что может вас выдать, это неработающие часы, но когда на них обратят внимание, будет уже поздно 9.)

З. Уберите с рабочего стола все значки.

4.                       Уменьшите размер панели задач до малюсенькой полосочки у края экрана (для пущего эффекта можно немного растянуть изображение на экране дисплея (его аппаратными настройками) по вертикали, чтобы эта полосочка вообще скрылась за край экрана), а на виду оказалась только ваша «фальшивая панель задач» . Если же размер панели задач менять не удается, то снимите «галочку» в строке Закрепить панель задач в свойствах этой панели.

5.                       Откройте свойства рабочего стола (щелкнув правой кнопкой мыши на его свободной части и выбрав пункт Свойства в контекстном меню) и в появившемся диалоговом окне Свойства: Экран выберите вкладку Рабочий стол. Измените рисунок на столе на соответствующее изображение (выбрав в поле Фоновый рисунок с помощью кнопки Обзор созданный вами в графическом редакторе файл).

В результате единственное, что теперь возможно на экране компьютера, это щелчок правой кнопкой мыши на рабочем столе.

Чтобы потом «вернуть на место» настоящий рабочий стол, надо отменить указанные выше настройки, а также восстановить прежний фон стола.

Примечание. Если вы собираетесь проделать всё это в школе, в компьютерном классе, то обязательно согласуйте свои планы с учителем!

17.2. Невидимая сумма

Подготовьте на листе электронной таблицы Microsoft Excel таблицу следующего вида (рис. 17.1).

          С 1 Введите первое число: Е!Переое число:

                           2 Введите второе число:                    Второе число:

                           З Их сумма:                                        Ик разность.

4

5 'Первое число• Б «Второе число:

                          7        произведение:

Рис. 17.1

В ячейки D1 и Вб введите формулу =В1; в ячейки D2 и Вб формулу =В2; в ячейки ВЗ, D3 и В7 — соответственно формулы

 

224

=В1+В2, =D1—D2 и =В5*В6. Затем выполните следующие дей-

СТВИЯ.•

1)              выделите ячейку ВЗ;

2)              в главном меню программы Excel выберите пункт Формат, Ячейки;

З) в появившемся диалоговом окне Форматы ячеек (рис. 17.2) в списке Числовые форматы выберите строку (все форматы), в поле Тип введите три символа « ; » (;;;) и щелкните на кнопке ОК:

Теперь после ввода значений в ячейки В1 и В2 в ячейках D3 и В7 будут выведены, соответственно, разность и произведение введенных чисел, а ячейка ВЗ будет пуста, хотя в строке формул для нее будет отображаться введенная ранее формула! (Это объясняется тем, что для этой ячейки задан так называемый «пустой пользовательский формат» , помните три символа «;»?)

 

 

 

0,00

Излить

Маска Формата позволяет угравлять отображением значений в ячейках. Если имеющиеся форматы не подходят, добавьте новый формат.

 

 

отмена

Рис. 17.2

Теперь предложите своим одноклассникам воспользоваться этим листом Excel для расчета суммы, разности и произведения двух чисел, Они увидят только что описанную картину (чем, конечно, будут очень удивлены). Наверное, кто-то из них предположит, что в ячейке ВЗ для содержащегося в ней значения задан белый цвет символов, но вы можете доказать, что это не так, установив для этой ячейки, например, черный цвет (используя кнопку с буквой А на панели инструментов).

17.3. Необычный результат расчета по формуле

в Microsoft Word

Вы, наверное, знаете, что в языках программирования имеется стандартная функция, возвращающая случайное число из некоторого диапазона. В школьном алгоритмическом языке, в языках Бейсик и Си эта функция имеет имя rnd, в языке Паскаль random. Функция с похожим именем имеется и в текстовом редакторе Microsoft Word. Только возвращает она не случайное число, а... булки с чаем! Не верите? Тогда наберите в редакторе на отдельной строке следующий текст: =rand ( п) , где п — некоторое натуральное число, и нажмите клавишу Enter. Тогда, скажем, при п = З вы увидите следующий результат (рис. 17.3):

 

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

Съешь еще этих мЯГКИХ французских Булок. да выпей чаю Съеиљ еще этих мягких французских булок, да выпей чаю, Съешь ещё этих мягких французских булок. да выпей чаю, Съешь еще этих њнгких французских булок. да выпей чаю, Съешь еще этих мягких французских Булок; да выпей чаю

Сьещь еще этих мягких французских Булок, да выпей чаю, Съешь еще этих мягких французских булок, да выпей чаю, Съешь еще этих мягких французских Булок. да выпей чаю Съешь еще этих ИЯГКИХ французских булок, да выпей чаю. Съешь еще этих њчгких французских Булок. да выпей чаю.

Рис. 17.3

При других значениях п другим будет только количество повторяющихся абзацев.

(Самостоятельно выясните «результат расчета» по формуле с использованием функции, в которой указаны два аргумента:

—rand (п, К) . )

17.4. Очень важный вывод

Если вы имеете опыт работы с текстовым редактором Microsoft Word, то, конечно, знаете, что в нем предусмотрена возможность проверки правописания в набранном тексте. Участки текста, которые Word считает «неправильными» , подчеркиваются красной

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

8—1523

 

 

226

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

17.5. Проверка знания таблицы умножения

Подготовьте лист электронной таблицы Microsoft Excel, с помощью которого можно проверять знание таблицы умножения. На этом листе (см. рис. 17.4) выводится вопрос о произведении двух чисел, каждое из которых может принимать значение от 1 до 9 (эти значения получаются случайным образом), например, в виде: «Чему равно произведение 9 * 4?».

1 Проверка знания таблицы умножения 2 Чему равно произведение 9 4? З Ваш ответ:

Рис. 17.4

После ввода ответа в ячейку ВЗ в ячейке А4 должно выводиться сообщение о его правильности.

Чтобы получить такое случайное целое число х, что а < х < Ь, где а и Ь — целые числа, в электронной таблице следует использовать формулу:

т. е. множители в ячейках В2 и D2 можно получить, записав в них Формулу -1 +  * 9). Формула в ячейке А4:

”Правильно!”•, ”Неправильно!”).

Ну как? Знает ли играющий в вашу игру таблицу умножеНИЯ?

Объявление в Интернете: «Куплю винчестер. Жест кие диски не предлагать!» .

Разные задачи

18.1. Вкусные ломтики

Мама очень вкусно поджаривает ломтики хлеба, пользуясь специальной маленькой сковородкой. Для готовности каждый ломтик должен быть поджарен с двух сторон. Поджаривание каждой стороны ломтика длится 30 секунд, причем на сковороде умещаются только два ломтика рядом.

За какое минимальное время при этих условиях мама может приготовить:

а) четыре ломтика хлеба;

б) пять ломтиков?

18.2. три лампочки

Есть две изолированные друг от друга комнаты. В одной из них расположены три лампочки, в другой — трехклавишный выключатель к этим лампочкам, каждая клавиша которого включает одну и только одну из них, но какую именно неизвестно (рис. 18.1). Изначально все лампочки выключены. Требуется за минимальное число переходов из одной комнаты в другую определить, какая клавиша какой лампочкой управляет. Как это сделать?

 

 

228

Рис. 18.1

18.3. Как приготовить эликсир бессмертия

Есть двое песочных часов: на З минуты и на 8 минут. Для приготовления эликсира бессмертия его надо непрерывно готовить ровно 7 минут, не меньше и не больше. Как это сделать за минимально возможное число операций (установок часов и их переворачиваний)? Время, затрачиваемое на переворачивание часов, не учитывать.

Возможное решение этой задачи приведено ниже (самостоятельно догадайтесь, как его прочитать).

пеЬевоЬыннвын СООШВ6ШСШВћЮП\Н6 dSGPI i — Н ЭТНКСНЬ LO,LOBi е— у  ЬОШОВНШР этнкснЬ по З ЛЫНћШРР

НЫ З-ЛННћШНРIХ dSGSX' этнкснЬ эхо ЛННћШћ — нс,шененнн вЬеленн k0L\fS 8-ЛННћШНР16 dSGPI ЪОШОВНШР е лннћш)•

ОПНШР ЗЫПћСШЫШР З-ЛННћШНРIБ dSGPI (С HSdSTS пЬотто 61Ti6 Ьыз (пЬопгпо З ЛЫНћШР1)•

3' kOLXfS З-ЛЫНћШНР16 dSGPI  — З9ПћСШНШР мХ dSGPP НО покы не HSdNHS,LP ЬОШОВНШР Э“ПНКСНЬ•

I—s• фновЬеленно З8ПћС,ШНШР 8-ЛННћШНР16 Н З-ЛННћШНР16

В описанном алгоритме делаются 6 операций с часами (их установок и переворачиваний). Но существует алгоритм с меньшим числом операций. Найдите его самостоятельно.

Если вы смогли это сделать, то решите еще несколько вариантов этой задачи (табл. 18.1).


Таблица 18.1

 

Первые часы

Вторые часы

Время приготовления эликси а

1

4 мин

10 мин

2 мин

2

З мин

4 мин

2 мин

з

З мин

10 мин

5 мин

4

4 мин

9 мин

7 мин

5

4 мин

11 мин

2 мин

6

6 мин

14 мин

10 мин

7

З мин

5 мин

4 мин

8

З мин

8 мин

1 мин

9

З мин

8 мин

4 мин

10

7 мин

8 мин

З мин

11

7 мин

12 мин

4 мин

12

5 мин

6 мин

З мин

13

6 мин

10 мин

2 мин

14

6 мин

16 мин

8 мин

15

6 мин

22 мин

14 мин

16

З мин

11 мин

7 мин

17

5 мин

8 мин

4 мин

18

7 мин

10 мин

2 мин

19

9 мин

11 мин

5 мин

20

5 мин

11 мин

8 мин

21

5 мин

12 мин

6 мин

22

7 мин

9 мин

1 мин

23

5 мин

16 мин

9 мин

24

5 мин

16 мин

8 мин

25

5 мин

16 мин

13 мин

18.4. Единственные часы остановились

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

18.5. Древнеегипетская задача

В папирусе, написанном египетским писцом Ахмесом, есть такая задача: разделить семь хлебов между восемью людьми за минимальное число разрезов (разрез — разделение хлеба или его части пополам). Как решить ее?

 

230

18,6. Задача о стрелкбх

Эта задача была опубликована известным американским специалистом по теории автоматов Э. Ф. Муром. Допустим, что стрелкам, выстроенным в шеренгу, разрешена следующая процедура общения между собой:

1)                       каждый стрелок может общаться непосредственно только со своими ближайшими соседями слева и справа; естественно, левофланговый (правофланговый) может общаться только с правым соседом (с левым соседом);

2)                       «сеансы общения» могут происходить один раз в каждую секунду (или другую заранее назначенную единицу времени); считается, что все стрелкй имеют секундомеры, которые строго синхронизированы ;

З) для каждого стрелка один «сеанс общения» состоит в том, что он передает своим соседям по одному условному знаку и принимает к сведению те условные знаки, которые ему сообщают соседи.

В некоторый момент левофланговый (или правофланговый) получает пакет с приказом «пли!» , который адресован всем стрелкам и должен быть выполнен ими одновременно. Возникают вопросы:

а) какую инструкцию должен заранее получить каждый стрелок (причем инструкцию, единую для всех стрелков!), чтобы при указанной процедуре общения в шеренге этот приказ был выполнен всеми одновременно?

б) каково минимальное время (наименьшее число секунд), за которое может быть обеспечено выполнение такого приказа?

Здесь важно подчеркнуть, что количество стрелков (длина шеренги) никому из этих стрелков не известно и вообще это число (обозначим его как п) может быть произвольным. Кроме того, в момент вручения пакета левофланговому (правофланговому) об этом никому из стрелков (кроме получателя) еще не известно .

18.7. Високосные годы

Вы, конечно, знаете, что некоторые годы, которые называют виСОКОСНЫМИ, состоят не из 365 дней, как обычно, а из 366 (в такие годы в феврале не 28 дней, а 29). Многие думают, что високосными являются все годы, номера которых кратны четырем. Однако это не так: 1900-й и 2100-й годы — не високосные!

Каковы причины этого?

Сначала разберемся с такими простыми понятиями, как год,

месяц и сутки.

Год (в астрономии называемый тропическим) — это промежуток от одного момента, когда центр Солнца на нашем земном

небе проходит точку весеннего равноденствия, до следующего такого же момента. Этот промежуток длится 365 суток 5 часов 48 минут и почти 46 секунд, т. е. примерно 365,2422 суток.

Месяцем считается так называемый синоДический месяц, или месяц лунных фаз, время от одного соединения Луны с Солнцем (новолуния) до другого. Синодический месяц длится 29 суток 12 часов 44 минуты и почти З секунды, или около 29,53059 суток.

Солнечные сутки длятся 24 часа.

Указанные временн%е периоды составляют основание календаря.

Мы пользуемся солнечным календарем, созданным римлянами. В календаре Юлия Цезаря, или, как принято говорить, в юлианском календаре (созданном в 46 году до нашей эры), 12 месяцев и 365 дней. Каждый четвертый год — високосный — продолжается 366 дней. Однако в юлианском календаре каждый год длился на 11 минут 14 секунд больше, чем тропический год, из-за чего весеннее равноденствие (день года, когда продолжительность дня равна продолжительности ночи) к XVI веку сместилось с 21 марта на 11 марта. Поэтому потребовалась усовершенствовать календарь отбросить «излишек» дней так, чтобы в будущем такая ошибка не повторялась. В 1582 году Папа Римский Григорий XIII повелел 5 октября считать как 15 октября 1582 г. (т. е. пропустить излишек в 10 дней), а последний год любого столетия считать високосным (366 дней) только в том случае, если его номер делится на 400 (например, 1600 или 2000). Юлианский год за четыре столетия «забегал вперед» на три дня. Чтобы «удержать» его, астрономы Папы Григория и отказались от трех високосных лет в четыре столетия. Григорианский же год лишь на 26 секунд дольше, нежели тропический, поэтому ошибка в один день набегает только за 3280 лет, и в этом уже нет ничего страшного. Принятым в XVI веке календарем, называемым григорианским, мы и пользуемся в настоящее время. Переход к нему был совершен после Великой Октябрьской революции, в 1918 году, когда для этого потребовалось «скомпенсировать» уже 13 дней. Летоисчисление по старому юлианскому календарю называют «старым стилем», а по григорианскому «новым стилем».

Алгоритм расчета даты праздника Пасхи

Карл Фридрих Гаусс, которого часто называют «королем математиков» XIX века (жаль только, что не информатиков 9), внес огромный вклад не только в «чистую» математику, но и в огромное число ее практических приложений — от геодезии и картографии до азартных игр. В частности,

232

он предложил формулы для непосредственного определения дат весеннего равноденствия и христианской Пасхи. Приведем алгоритм расчета даты православной Пасхи, основанный на формулах Гаусса, как говорят англичане, «as is» («как есть») — т. е. без всяких объяснений и обоснований.

1.  Определить остаток от деления номера года на 19 (назовем его а).

2.  Вычислить остаток от деления номера года на 4 (назовем его Ь). З. Определить остаток от деления номера года на 7 (назовем его с).

4.   Рассчитать остаток d от деления суммы (19а + 15) на 30.

5.   Вычислить остаток е от деления суммы (26 + 4с + 6d + 6) на 7.

6.   Определить сумму f = d + е.

7.   Пасха будет либо в марте, либо в апреле (все даты получаются по так называемому «старому стилю», или по юлианскому календарю — см. выше) в зависимости от величины f:

если f не больше 9,

дата Пасхи        (22 + f) марта, иначе

Пасха приходится на (f — 9) апреля

Указанные формулы предусматривают два исключения: при d = 29 и е = 6 Пасха должна быть перенесена с расчетной даты 26 апреля на 19 апреля , а при d = 28 и е = 6 — с расчетной даты 25 апреля на 18 апреля

Таким образом, Пасха всегда происходит между 22 марта и 25 апреля (еще раз напомним, что все даты приводятся по «старому стилю»). Например, для 2009 года: а = 14; Ь = 1; с = О; d = 11; е = 4; f = 15. Так как f 9, то месяц — апрель, а день (15 — 9) = 6. Переведя полученную дату в новый стиль (по григорианскому календарю), получим: 6 + 13 = 19 апреля.

Дату Пасхи в 2011 и последующих годах предлагаю читателям определить самостоятельно. Для этого можно разработать компьютерную программу или использовать электронную таблицу Microsoft Excel

В заключение замечу, что все эти формулы справедливы только для периода с 1900 по 2099-й год.

Такой случай был в 1981 г.

Этот случай имел место в 1954 г.

В ней для определения остатка от деления одного целого числа на другое используется функция ОСТАТ .

Задание

Используя логические операции и операцию определения остатка от деления одного целого числа на другое, запишите условие, которое определяет, что ЛК-й год является високосным.

18.8. Почтовые индексы

1

На почтовых конвертах имеются трафареты, в которых записывается та или иная цифра

2

индекса почтового отделения (рис. 18.2). (Номеров, указанных на этом рисунке, на конверте нет.)

Запишите условия, по которым можно 6 установить, какая именно цифра записана на трафарете. Например, для цифры 1 такое 9 условие может быть оформлено в виде:

Рис. 18.2

Кроме логической связки И (которой, как известно, обозначают знак логической операции конъюнкции, или логического умножения), в условиях можно использовать связки ИЛИ (знак логической операции дизъюнкции, или логического сложения) и НЕ (знак логической операции отрицания, или инверсии).

Необходимо применить минимально возможное количество этих логических связок. (Считать, что все цифры всегда записаны правильно.)

18.9. Десять утверждений

Определите, есть ли среди следующих утверждений истинные.

1.  Только одно утверждение в этом списке ложно.

2.  Только два утверждения в этом списке ложны.

З. Только три утверждения в этом списке ложны.

4.        Только четыре утверждения в этом списке ложны.

5.        Только пять утверждений в этом списке ложны.

6.        Только шесть утверждений в этом списке ложны.

7.        Только семь утверждений в этом списке ложны.

8.        Только восемь утверждений в этом списке ложны.

9.        Только девять утверждений в этом списке ложны.

10.   Все десять утверждений в этом списке ложны.

18.10, Сказка

Когда-то в древности в дремучем муромском лесу из-под земли били десять источников мертвой воды. Из первых девяти источ-

ников мертвую воду мог взять каждый, но десятый источник находился в пещере Кощея Бессмертного, в которую никто, кроме самого Кощея, попасть не мог.

На вкус и цвет мертвая вода ничем не отличалась от обыкновенной, однако если человек выпивал из какого-нибудь подобного источника, то умирал. Спасти его могло только одно — если он запивал такую воду водой из источника, номер которого больше. Например, если он пил воду из седьмого источника 7), то ему надо было обязательно запить ее водой .N2 8, № 9 или .N2 10 из соответствующих источников. Если же он пил воду .N2 9, то ему могла помочь только вода 10. Ну, а если он сразу выпивал мертвую воду № 10, то ему уже ничто помочь не могло.

Чтобы извести Кощея Бессмертного, от которого страдали жители муромского леса, Иванушка-дурачок вызвал его на дуэль. Условия дуэли были такие: каждый приносит с собой кружку с жидкостью и дает ее выпить своему противнику. Кощей обрадовался: «Ура! Я дам ему мертвую воду 10 и Иванушка-дурачок не сможет спастись! А сам выпью воду, которую Иванушка-дурачок мне принесет, запью его своей десятой и спасусь!»

В назначенный день оба противника встретились в условленном месте. Они честно обменялись кружками и выпили то, что в них было. Каковы же были радость и удивление обитателей муромского леса, когда оказалось, что Кощей Бессмертный умер, а Иванушка-дурачок остался жив! Только Василиса Премудрая догадалась, как удалось Иванушке победить Кощея. Попробуйте догадаться и вы.

18.11. Отец сына

У входа в музей стоят два человека. Один из них отец сына другого. Возможно ли такое?

18.12. Разговор родственников

Сын отца профессора разговаривает с отцом сына профессора, причем сам профессор в разговоре не участвует. Может ли быть такое?

18.13. Кто изображен на портрете?

У одного человека по фамилии Умников спросили: «Кто изображен на этом портрете?» Он ответил: «Отец висящего есть единственный сын отца говорящего». Чей это был портрет?

18,14. Слова после чисел

Определите, какие слова должны быть записаны во второй строке стихотворения:

1, 10, 11, 100, 101,

18.15. «Ей было 1100 лет»

Ей было 1100 лет,

Она в 101-й класс ходила,

В портфеле по 100 книг носила —

Все это правда, а не бред.

Когда, пыля десятком ног,

Она шагала по дороге,

За ней всегда бежал щенок,

С одним хвостом, зато 100-ногий.

Она ловила каждый звук

Своими 10-ю ушами,

И 10 загорелых рук

Портфель и поводок держали.

И 10 темно-синих глаз

Рассматривали мир привычно... Но станет все совсем обычным, Когда поймете наш рассказ.

А. Н. Стариков

Поняли ли вы рассказ поэта?

18.16. Непредвиденное затруднение

Несколько лет назад в некоторой фирме один состоятельный клиент покупал компьютер. Этот компьютер был по тем временам мощным (с процессором Pentium с тактовой частотой 168 МГц да-да, было и такое!) и, соответственно, дорогим. Неожиданно возникла проблема: индикатор тактовой частоты процессора на системном блоке оказался двухразрядным. Стандартное в таких случаях решение — установка на индикаторе буквосочетания «НЬ (от англ. high — высокая) покупателя не устраивало — он требовал, чтобы индикатор показывал частоту с точностью до мегагерца. Это было сделано, причем без замены индикатора или дописывания символов на корпусе! Частота отображалась непосредственно на индикаторе, и покупатель ушел довольный. Как это было сделано?

 

236

18.17. Пропущенное число

Какое число надо поставить вместо символа «?» в приведенной ниже последовательности?

10, 11, 12, 13, 14, 15, 16, 17, 20, 22, 24, 31, 100, 2, 10000

18.18, Кощей Бессмертный и Иван Царевич

Иван Царевич попал в плен к Кощею Бессмертному. Тот выдвинул Ивану такие условия. Кощей загадывает три двузначных числа а, Ь и с. Царевич должен назвать ему три своих числа Х, У и Z, после чего Кощей сообщит ему сумму ах + ЬУ + cZ. После этого Иван Царевич должен отгадать задуманные Кощеем числа, иначе ему отрубят голову. Как ему спастись?

18.19. Бедный торговец (старинная задача)

В лавке бедного торговца вместо гирь было всего 4 камня. Однако с помощью этих камней он на рычажных чашечных весах совершенно правильно взвешивал предметы массой 1, 2 40 кг. Какого веса были эти камни?

18.20, Может ли такое быть?

Один мальчик сказал: «Позавчера мне было 10 лет, а в будущем году мне исполнится 13 лет». Может ли такое быть?

18.21. А такое?

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

18.22. Об экономичности систем счисления

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

Чтобы в десятичной системе записать 1000 чисел (от О до 999), необходимо 30 знаков (по 10 цифр для каждого из трех разрядов). А вот, скажем, в двоичной системе с помощью 30 знаков можно записать 2 15 различных чисел (так как для каждого двоичного разряда нужны только две цифры О и 1, то с помощью 30 цифр можно записывать числа, содержащие до 15 разрядов).

Но 215> 1000, поэтому, имея 15 двоичных разрядов, можно записать больше различных чисел, чем с помощью трех десятичных. Таким образом, двоичная система — более экономичная, чем десятичная.

А какая из систем счисления — самая экономичная? Для ответа на этот вопрос рассмотрим конкретную задачу. Пусть в нашем распоряжении имеется 60 знаков. Мы можем, разбив их на 30 групп по два знака в каждой, записать с их помощью в двоичной системе любое число, имеющее не больше 30 двоичных разрядов (т. е. в общей сложности — 2 30 чисел). Те же 60 знаков мы можем разбить на 20 групп по три элемента и, пользуясь троичной системой, записать 3 20 различных чисел. Далее, разбив эти 60 знаков на 15 групп по четыре элемента в каждой, можно применить четверичную систему и записать 4 15 чисел и т. д. В частности, воспользовавшись десятичной системой (т. е. разбив все знаки на 6 групп по 10 элементов в каждой), мы могли бы записать 106 чисел, а применив шестидесятеричную систему, можно было бы с помощью 60 знаков записать только 60 чисел.

Посмотрим, какая из возможных здесь систем — самая экономичная, т. е. позволяет записать с помощью данных 60 знаков наибольшее количество чисел. Иными словами, речь идет о том, ка-

кое из чисел — 2 30 , 3 20 , 4 15 , 5 12 , 6 10 , 106 , 12 5 , 154 , 203 , 30 2 , 60

наибольшее .

Предлагаю читателю получить ответ на обсуждаемый вопрос с помощью электронной таблицы Microsoft Excel, построив график зависимости указанных чисел от основания соответствующей системы счисления (рис. 18.3).

Рис. 18.3

18.23. Прабабушки и прадедушки

Сколько всего прапрадедушек и прапрабабушек было у всех ваших прапрадедушек и прапрабабушек?

 

238

18.24. Илья Муромец и Змей Горыныч

Рассказывал один программист своему сыну на ночь сказочку:

«Срубил Илья Муромец Змею Горынычу голову, а взамен две выросли. Срубил 2 — выросли 4, срубил 4 выросли 8, срубил 8 — выросли 16, срубил 16 — выросли 32, срубил 32 — выросли 63, срубил 63 выросли 128, срубил 128 — выросли 256. А как срубил Илья 256 голов, тут и настал Змею Горынычу конец, потому что был Горыныч восьмиразрядный!»

Какие три ошибки имеются в этой сказке?

18.25. Шутники и серьезные

Школьники для игры разбились на две «партии»: на «серьезных» , отвечающих правильно на любой вопрос, и на «шутников» , дающих на любой вопрос только неправильные ответы.

Учитель, узнав об этом, спросил у Иванова, «серьезный» он или «шутник». Не расслышав ответа Иванова, он спросил у Петрова и Сидорова (сидевших рядом с Ивановым и все слышавших): « Что ответил мне Иванов?» . Петров сказал: «Иванов ответил, что он серьезный». Сидоров же сказал: «Иванов ответил, что он шутник». Кем были Петров и Сидоров?

18.26. Три очень умных попугая

На рыночной площади одного маленького городка стояла клетка с очень умными говорящими попугаями (рис. 18.4). За некоторую плату каждый попугай отвечал на заданные ему вопросы. Жители городка знали, что один из попугаев всегда говорит правду, другой, сколько ему ни дай, соврет, а третий отвечает согласно плате и настроению: решит, что мало дали, соврет; решит, что плата достаточная, — скажет правду. Но вот кто из них — лжец, а кто хитрец — никто не знал, пока в город не приехал... специалист по логике.

Рис. 18.4

— Кто сидит рядом с тобой? — спросил он у первого попугая. — Лжец, — ответил тот.

— А ты кто такой? — спросил специалист у второго попугая .

— Я хитрец!

— А кто сидит рядом с тобой? — спросил он у третьего попугая. — Абсолютно честный попугай! — был ответ.

После этого специалист по логике сказал, кто из них действительно абсолютно честный, кто лжец, а кто хитрец. А вы сможете это сделать?

18.27, Умная обезьяна

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

Может ли она, используя два уцелевших ореха, решить эту задачу за четыре испытания (во время которых все орехи могут быть разбиты)?

18.28. Импульсы с планеты т Кита

С планеты с Кита поступают радиоимпульсы. Была получена последовательность сообщений вида:

Х[1] = 000100001001010101100001

Х[2] = 00010001000010010101010101100001

Х[3] = 0001000100010000100101010101010101100001

Выдвинута гипотеза: если сообщения X[i], i = 1, 2, З подчиняются некоторому простому закону, то на планете живут разумные существа.

Разумные ли существа живут на т Кита?

18.29, 10 единиц и 10 двоек

На доске написано мелом 10 единиц и 10 двоек. За один ход разрешается стереть две любые цифры и, если они были одинаковыми, то написать двойку, а если разными — единицу. Если оставшаяся на доске цифра — единица, то выиграл первый игрок; если двойка — второй. Кто победит в этой игре?

240

18.30, Еще одна «Шоколадка» * (задача-шутка)

Двое ребят по очереди ломают шоколадку размером 6 х 8 долек. За один ход разрешается сделать прямолинейный разлом любого из кусков вдоль углубления в шоколадке. Проигрывает тот, кто не сможет сделать ход.

Как должны играть участники, чтобы выиграть?

Почему задача с этой игрой названа задачей-шуткой?

18.31. Почему трижды?

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

18.32. Детская песенка

Вам, конечно, известна такая детская песенка:

Точка, точка, запятая

Вышла рожица кривая.

Палка, палка, огуречик — Получился человечек.

Суть какого вида представления графической информации характеризуют слова этой песенки?

18.33. Умеете ли вы считать?

Если вы прочитали главу 8, то, конечно, научились считать в уме О. Это значит, что вы легко решите следующие задачи.

1. Сколько квадратов имеется на дополнительной части клавиатуры настольного ТМ-совместимого компьютера?

2. Сколько треугольников, квадратов и прямоугольников можно увидеть на рис. 18.5?

Рис. 18.5

Первую задачу с шоколадкой см. в главе 1.

З. Определите количество треугольников на рис. 18.6.

Рис. 18.6

4.   Сколько треугольников, правильных шестиугольников и ромбов имеется на рис. 18.7?

AVAVA

AVAVAVA

AVAVAVAVA

AVAVAVAVAVA

Рис. 18.7

5.   Сколько треугольников содержит фигура, показанная на рис. 18.8?

Рис. 18.8

18.34. два вопроса

Когда мы смотрим на число 10, а говорим: «Два», и когда мы смотрим на число 2, а говорим: «Десять»?

18.35. Пятьдесят вопросов

1.  Вэ, икс, эль, цэ, дэ, эм.

Здесь пропущено первое. Что именно?

2.  В греческом их — 24, в латинском — 26. А сколько их в русСКОМ?

242

З. В художественных произведениях на военную и приключенческую тему, написанных на русском языке, очень важные события происходят, как правило, во время Ч, а написанных на английском языке — в час Х. Почему?

4.   Что такое «86 sMopuiM»?

5.   Французский писатель Виктор Гюго сказал, что «у истории ее нет». Все вы ею пользовались, а ее виртуальной разновидностью можете воспользоваться на компьютере. Что это?

6.   В языке PostScript имеется возможность обрабатывать целые числа не только в десятичной системе счисления, но и еще в 34 других системах. Почему используется именно 35 различных систем счисления?

7, В чем заключается метод подбора ключа к зашифрованному тексту, который по-английски называют Brute-force attack («атака методом грубой силы»)?

8.      Что такое «кульбит» с точки зрения информатики?

9.      Однажды дежурному пришло с корабля SMS-c00611-xeHI•Te на мобильный телефон в виде числа 505. Дежурный (он понял, от кого это сообщение) срочно сообщил об этом командующему флотом, и на помощь кораблю были посланы специальные суда и самолеты. Почему это было сделано?

10. 1/2 этой буквы означает одно из основных понятий баз данных. Что это за буква и какое это понятие?

11. У фирмы Audi это четыре кольца; у фирмы Peugeot — лев. А что это у компьютерной фирмы Apple?

12. Какой цветок мог бы стать «символом» долговременной (внешней) памяти?

13. Специалисты по информационным технологиям, публикуя в Интернете свой адрес электронной почты, часто указывают его в виде: ivanov  или ivanov dm@mail предлагая в письме заменить русские слова соответствующими символами. Почему?

14. Вы, наверное, слышали о так называемой «проблеме 2000-го года» . Напомним, что она была связана с тем, что при переходе с конца дня 31 декабря 1999 года на начало 1 января 2000 года некоторые программы, созданные в 80-х годах прошлого столетия и оперировавшие только с двумя последними цифрами года, могли сработать неправильно. В англоязычной компьютерной литературе эту проблему часто называли «проблема


из

УЖ». Почему для нее использовано именно такое сокраще-

15. Что общего между Государственным флагом России и принципом получения цветной точки (пикселя) на экране монитора?

16. Какая связь между городом в Великобритании, ружьем калибра 30х30 и одним из элементов компьютера?

17. Перед вами стихотворение, написанное в 60-х годах прошлого века программистом С. А. Марковым:

Начало светлое весны...

Лесов зеленые массивы Цветут, И липы, и осины, И ели помыслы ясны.

Себе присвоил этот май

Права одеть листвою ветки, И целый месяц в душе метки Он расставляет невзначай...

И пишется легко строка,

И на этюдник рвутся кисти, Уходит ложь в обличье истин, И говорю я ей: пока!

Сколько слов, связанных с синтаксисом некоторого языка программирования, имеется в стихотворении? (Это могут быть так называемые «зарезервированные» слова языка, названия операторов, типов величин и т. п.)

18. Какая поговорка описывает момент, когда закончится выполнение следующего оператора цикла, записанного ниже на трех языках программирования:

а) на школьном алгоритмическом языке:

[ вывод нс, Здравствуйте ! кц при 2 1

б) на языке Паскаль: repeat write1n ( ' Здравствуйте!

         until 2     1

в) на языке Бейсик:

DO

PRINT ” Здравствуйте ! ”

              LOOP UNTIL 2         1

19. О какой компьютерной программе идет речь в песне (чутьчуть «подправленной» 9):

Он мне дорог с давних лет И его милее нет

Этих окон негасимый цвет.

20. Почему логическую операцию конъюнкции иначе называют логическим умножением, а логическую операцию дизъюнкЦИИ логическим сложением, а не наоборот?

21. Этого литературного героя можно было бы назвать «предшественником» компьютера, — ведь именно он, изучая таблицу умножения, пользовался двоичной системой счисления, выясняя, что «единожды нуль — нуль», а «единожды един един». Кто этот герой?

22. Вы наверняка слышали песню Максима Леонидова «Девочкавиденье», в которой есть слова:

«Она прошла, как каравелла по зеленым волнам, Прохладным ливнем после жаркого дня.

Я оглянулся посмотреть, не оглянулась ли она,

Чтоб посмотреть, не оглянулся ли я.»

С каким понятием программирования связаны две последние строчки?

23.   В программировании часто используют особую структуру данных так называемый «связанный список» из связанных между собой элементов, каждый из которых состоит как минимум из двух частей: в одной из них записана какая-то характеристика объекта, а другая часть — это указание на следующий объект. В какой известной русской народной сказке реализована такая структура данных?

24.   В программировании также используют структуру данных, называемую стеком. В ней реализован принцип «последним пришел — первым вышел» (по-английски — «Last In — First 0ut», или, сокращенно, LIFO). Какое правило работы стека нарушил персонаж фильма «Операция «Ы» и другие приключения Шурика» по кличке Трус (роль которого исполнял Георгий Вицин)?

25.   Какую клавишу начинающие пользователи часто называют «домиком», и почему?

245

26.   Есть такой широко известный английский анекдот. «Хотите получить много $$$$$$? Нет ничего проще! Включите компьютер, войдите в любой текстовый редактор и нажмите ... » . Что именно нужно нажать?

27.   Одна школьница, впервые увидевшая Рабочий стол операционной системы Windows, робко спросила свою учительницу информатики: «А чем его мыть?». Что именно школьница увидела на Рабочем столе?

28.   Один программист написал для компьютера специальную программу: если на клавиатуре одновременно нажимается несколько клавиш, то компьютер блокирует работу всех программ, выводит на экран рисунок и начинает лаять. Для чего ему понадобилась такая программа?

29.   Как известно, в Windows запрещается использовать в именах файлов кавычки, потому что этот символ считается «специальным» . Но Петя смог назвать файл своего реферата так: Реферат на тему “ рекурсия ” . Как он это сделал?

30.   От латинского слова curro — «бежать» происходят два термина, один из которых имеет отношение к полиграфии и компьютерам, а другой — только к компьютерам. Какие это термины?

31.   Ряд известных компьютерных компаний (Intel, Microsoft и др.) организовали консорциум, занимающийся согласованием стандартов по применению Интернет-сервисов. Сокращенное название этого консорциума — W3C, хотя его полное название состоит из четырех слов. Почему эта аббревиатура (сокращенное название) — трехбуквенная?

32.   Вы, конечно, знаете, что такое бит. А что такое «трит»?

33.   Петр Первый прорубил его в Европу; оно же часто появляется на экране при работе компьютера. Что это?

34.   При работе компьютеров Macintosh фирмы Apple на экране присутствует изображение . Что оно означает?

35.   Какой счетный прибор после появления калькуляторов стали в шутку называть «деревянным калькулятором»?

36.   Один из элементов диаграмм и графиков, получаемых в программе Microsoft Excel, называется словом иностранного происхождения, одно из значений которого означает «вымысел, выдумка, нечто невероятное» или «вымышленная биография разведчика». Что это за элемент? Каково его назначение на диаграмме (графике)?

 

 

246

37 (вопрос для читателей, знающих английский язык). Перед вами табличка с названиями языков программирования:

1.  Алгол (самый первый язык программирования высокого уровня).

2.  Бейсик. З. Си.

4. ? ? ? (четвертый).

Какой язык программирования должен быть здесь записан четвертым?

38.  В обозначениях древнекитайского математика Фу Ши, жившего около 3000 г. до н.э., знак означал число 6, знак ЕЕ число 1, а знак - - — число З. Что тогда обозначал знак ?

39.  Какое изображение вы разместили бы на месте вопросительного знака в приведенной таблице?

Оператор 1

Оператор2

ОператорЗ

действия 1 иначе          действия2 все

ц_ц

Оператор 1

Оператор2

КЦ

 

40.  Перед вами 9 таблиц:

 

 

5

 

 

01110110

00110101

00101110

 

 

1

 

 

01001001

00110001

00101100

Почему в последней таблице символ отсутствует?

247

41.  Вы, конечно, знаете, что в программировании существует такая конструкция как вложенный цикл. Какая русская народная игрушка является «аналогом» этой конструкции?

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

43.  Вам, наверное, известно, что существует язык программирования ЛОГО. Как в шутку можно называть педагога, преподаЮЩеГО ученикам этот язык?

44.  Вы когда-нибудь видели, как белка бегает в колесе? Какое состояние при работе программы является аналогом «белки в колесе»?

45.  Вы, наверное, слышали такую пословицу: «Язык мой — враг мой» . А когда бывает, что язык — это помощник и даже источник дохода?

46.  Как известно, совокупность символов, используемых в некотором языке, носит название «алфавит» . У этого слова есть и синоним — «азбука» . Какое из этих слов следовало бы считать «исконно русским», а какое «пришелец» из иностранных языков?

47.  Какое состояние компьютера описывает крылатая фраза «А воз и ныне там» из всем известной басни Ивана Андреевича Крылова «Лебедь, Щука и Рак»?

48.  Какая русская народная поговорка характеризует значение единицы информации «бит»?

49.  Дана последовательность цифр: 8, 2, 9, О, 1, 5, 7, З, 4, 6. Почему эти цифры расположены здесь именно в таком порядке?

50.  В идеологии объектно-ориентированного программирования важными понятиями являются «предок» и «потомок». Название какого романа И.С. Тургенева связано с этими двумя понятиями?

Прокурор приезжает с инспекцией в тюрьму и видит: ворота открыты, охраны нет, камеры настежь, и при этом все преступники на месте! Совершенно ошарашенный увиденным, он вызывает начальника тюрьмы и говорит:

— Послушайте, у других сбегают несмотря на наручники, решетки и запертые двери, несмотря на собак и охрану! Что же сделали вы? — Провел им Интернет...


Ответы

Ответы к главе 1

1.3 Все возможные варианты состава пиццы (кроме сыра) можно представить в виде табл. 01.1, в которой цифра 1 означает, что соответствующий компонент в продукте используется, а цифра О — что этот компонент не используется.

Таблица 01.1

 

Перец

Лук

Грибы

Помидоры

Морковь

Анчоусы

1

 

 

 

 

 

 

2

 

 

 

 

 

1

з

1

1

1

 

1

 

4

 

 

1

1

 

1

Из этой таблицы видно, что количество различных вариантов пиццы равно десятичному числу, которое в двоичной системе

условию задачи можно не использовать ни один из перечисленных компонентов — такому «составу» пиццы соответствует вариант номер 1). Следовательно, всего возможно 64 варианта.

1.4 Здесь рассуждения будут следующими.

1. Десятичное число 31 в двоичной системе счисления выглядит

(естественно) из единиц и нулей.

 

249

вая двоичные числа 1, 10, 100, 1000 и 10000 (убедитесь в этом сами!). Эти числа есть двойка в степени О, 1, 2, З и 4, т. е. десятичные числа 1, 2, 4, 8 и 16.

Значит, минимальный набор гирь-разновесов, который можно использовать для градуировки весов на интервал масс от 1 до 31 кг, — это гири массой 1, 2, 4, 8 и 16 кг. Например, чтобы отградуировать весы на З кг (310 112) , можно использовать гири массой 1 и 2 кг (этим значениям соответствуют двоичные числа 1 и 10). Чтобы отградуировать весы на 13 кг (1310 = 11012), надо использовать гири массой 1, 4 и 8 кг (12, 1002 и 10002), и т. д.

1.5

1.  Учитывая решение предыдущей задачи, нетрудно понять, что десятичные числа 1, 2 7 можно получить из чисел 1, 2 и 4. Значит, надо иметь 1, 2 и 4 звена. Их можно получить, если расцепить третье или четвертое звено — тогда цепочка распадется на три части: в одной будет 2 звена, в другой — 4 звена, а в третьей — одно (разъединенное) звено. С их помощью удастся расплатиться в течение семи дней так, как показано в табл. 01.2.

Таблица 01.2

Номер дня проживания

Количество звеньев цепочки, отдаваемых в d -й день

Количество звеньев, возвращаемых хозяином

1

1

 

2

2

1

з

1

 

4

4

 

5

1

 

6

2

1

7

1

 

2.  Решим задачу в общем случае (п дней и п звеньев).

Определим максимально возможное число дней, за которые можно расплатиться, расцепив К звеньев цепочки, Очевидно, что этими К расцепленными одинарными звеньями можно расплачиваться в течение первых К дней проживания. Чтобы расплатиться за (К + 1)-й день, надо иметь часть цепочки из (К + 1) звеньев — такую часть можно получить, расцепив первым (К + 2)-е звено. Тогда, имея К одиночных звеньев и (К + 1) сцепленных, можно будет расплатиться за (К + 2)-й, (К + З)-й (ЦК + 1) — 1)-й дни прожи-

250

вания. Для расчета за следующий день надо иметь часть цепочки из + 1) звеньев ее можно получить, расцепив вторым (З(К + 1) + 1)-е звено. Продолжая аналогичные рассуждения, можно получить (2k + 1) частей цепочки, представленные в табл. 01.3.

Таблица 01.3

Номер части

1

2

З

4

5

6

 

 

 

Количество звеньев

1

1

 

1

1)

1

 

1

 

Номер разъединения

 

1

 

2

 

 

 

 

 

Номер расцеп-

ляемого звена

 

 

 

3(k-F 1) +2

 

+ 1)+3

 

 

 

Например, при К = З табл. 01.3 принимает вид табл. 01.4. Общее число дней, за проживание которых можно расплатиться в этом случае, равно З + 4 + 8 + 16 + 32 63.

Таблица 01.4

Номер части

1

2

з

4

5

6

7

Количество звеньев

 

 

 

 

16

1

32

Номер разъединения

 

1

 

2

 

з

 

Номер расцепляемого звена

 

5

 

14

 

31

 

В общем случае при К разъединенных звеньях число дней, за которые можно расплатиться таким способом, равно ((k + 1)2 k+ 1 1). То есть если у путешественника имеется цепочка из п = ((k + 1)2 k+ 1 — 1) звеньев, то он может разъединить К звеньев так, чтобы получились куски, состоящие, соответственно, из (К + 1), + 1), 2 2 (К + 1) 2 (К + 1) звеньев. Тогда, располагая этими кусками и К разъединенными звеньями, путешественник может расплачиваться с хозяином в течение п дней. Если же число п звеньев цепочки непредставимо в виде п = ((k + 1)2 1), то надо рассмотреть наименьшее К такое, что п < (К + 1)2 1. В частности, если п = 100, то достаточно распилить К = 4 звена.

Дополнительное задание

Самостоятельно ответьте на вопрос: какие 4 звена нужно распилить?

Ответы на это и другие дополнительные задания, которые даны в ответах на основные задачи, приводятся в отдельном подразделе в конце книги.


1.6 В первый кошелек надо положить одну монету, во второй две, в третий — четыре, в четвертый — восемь, в пятый — шестнадцать, в шестой — тридцать две, в седьмой — шестьдесят четыре. Если этим кошелькам присвоить условные номера, соответственно, 1, 2, , то любую сумму от 1 до 127 рублей можно получить следующим образом. Нужно перевести эту сумму в двоичную систему счисления, а затем взять кошельки, номера которых равны номерам тех разрядов двоичной записи суммы, где будет цифра 1 (разряды при этом следует нумеровать справа налево, начиная с 1). Например, чтобы выдать сумму в 109 рублей, надо отдать кошельки с номерами 7, 6, 4, З и 1, так как 10910 = 11011012 (см. разъяснения к задаче 1.4).


1.7 В таблице в первом столбце справа записаны десятичные числа, которым в двоичной системе счисления соответствуют числа, оканчивающиеся на 1; во втором столбце — числа, у которых в двоичном представлении вторая от конца цифра равна 1; в третьем — десятичные числа, которым в двоичной системе соответствуют числа, имеющие 1 в третьем справа разряде, и т. д. Например, число 22, указанное в задании, в двоичной системе счисления имеет вид 10110, поэтому оно записано в пятом, третьем и втором столбцах. Если вспомнить правило перевода чисел из двоичной системы в десятичную, то по записи 10110 соответствующее десятичное число можно получить как сумму 2 4 + 2 2 + 2 1 (это так называемая «развернутая запись числа»), или, «привязываясь» к нашей нумерации столбцов таблицы, как сумму 2 5 1 + 23 1 + 2 2 1 . Таким образом, для отгадывания чисел необходимо запомнить, что пятому столбцу соответствует число 16, четвертому — 8, третьему — 4, второму — 2, а первому — 1, и складывать соответствующие числа для столбцов, названных задумавшим число. При этом, повторим, отгадывать числа можно, даже не глядя на таблицу.

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

1.8 Вот разгадка этого несложного фокуса.

Запишем каждое из чисел от 1 до 127 в двоичной системе. Каждое из этих чисел содержит в двоичной записи не более семи цифр

с номером К (К * 1, 2 7), если в его двоичной записи на К-м месте стоит единица, и не будем его туда записывать, если в его дво-

Номера таблиц приведены над ними.

ичной записи на К-м месте стоит нуль. Например, число 57, которое в двоичной системе записывается как 0111001, должно быть занесено в первую, четвертую, пятую и шестую таблички; число 1 — только в первую табличку; число 127 — во все семь табличек и т. д. Таким образом, слушая, в каких табличках содержится данное число, вы тем самым получаете его двоичную запись. Остается лишь перевести ее в десятичную.

Можно поставить вопрос и наоборот: требуется назвать произвольное число от 1 до 127, а отгадчик говорит, в каких табличках оно есть, а в каких его нет. Для этого достаточно перевести названное число в двоичную систему (при некотором навыке это нетрудно сделать и в уме) и назвать номера тех разрядов, в которых получится единица.

Примечание. В каждой из табличек (см. табл. 1.4—1.10) числа

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


1.10 Конечно, после разъяснений к предыдущим фокусам вы уже поняли, в чем секрет данного фокуса и как его демонстрировать. Единственная трудность — запомнить номера 15 слов (словосочетаний). При оформлении табл. 1.11 использованы некоторые приемы, облегчающие запоминание. Например, слова «бит» и «байт» даны, соответственно, под номерами 1 и 8 (1 байт = 8 бит), номер 13 («несчастливое» число) связано со словом «число», а перед ним под номером 12 приведено слово «цифра». Размер дискеты равен 3,5 дюйма, и слово «Дискета» дано под номером З. В жизни (не считая уроков информатики) мы пользуемся десятичной системой счисления, поэтому словосочетание «система счисления» дано под номером... правильно — 10!

И еще: чтобы дополнительно «засекретить» фокус, можно в табл. 1.11 номера терминов не приводить (но запомнить их вам все равно, конечно, придется).

1,11 Одна из возможных серий вопросов, заведомо приводящая к успеху, такова.

1-й вопрос: «Разделите задуманное число на 2. Является ли единица остатком при таком делении?» Если ответ— «да», то запишем 1, если «нет» — то О (иначе говоря, мы запишем остаток от деления задуманного числа на 2).

2-й вопрос: «Разделите на 2 то частное, которое получилось при первом делении. Является ли единица остатком при таком делении? При ответе «да» запишем 1, а при ответе «нет» — О.

Каждый следующий вопрос мы будем тоже составлять по тому же самому образцу, т. е.: «Разделите на 2 то частное, которое получилось при предыдущем делении. Является ли единица остатком при таком делении?» И всякий раз мы будем записывать 1 при положительном ответе и О — при отрицательном.

Повторив эту процедуру 10 раз, мы получим 10 цифр, каждая из которых есть нуль или единица.

После ответов на все вопросы записанные цифры надо расположить в обратном порядке — получится двоичное число, соответствующее задуманному десятичному (оно будет 10-значным). Действительно, система наших вопросов воспроизводит ту самую процедуру, с помощью которой делается перевод некоторого числа в двоичную систему. При этом десяти вопросов достаточно, так как каждое число от 500 до 1000 записывается в двоичной системе с помощью не более десяти знаков. Переведя затем полученное число в десятичную систему счисления, мы и получим задуманное число.

Если же считать, что задуманное число уже заранее переведено в двоичную систему, то система вопросов, с помощью которой его можно узнать, будет такой. Нужно о каждой его цифре спросить, равна она нулю или нет. Для этого можно задать вопросы:

1)                      


является ли единица крайней справа цифрой двоичного числа, соответствующего задуманному десятичному числу?

2)                       является ли единица второй справа цифрой двоичного числа, соответствующего задуманному десятичному числу?

Для решения этой задачи достаточно 22 вопросов. Двоичная запись пятизначного числа является 17-значной (убедитесь в этом сами). Можно действовать, например, так. Сначала 15 вопросами, указанными при анализе решения задачи 1.11, вы выясняете последние 15 из 17 цифр, содержащихся в двоичной записи телефонного номера. Затем спрашиваете: «Солгали ли вы в одном из 15 ответов?» Если ответ «да», то либо один из первых 15 ответов, либо этот последний ответ ложны. Методом «деления пополам» вы четырьмя вопросами узнаете, в каком из этих 16 ответов ложь, а затем двумя вопросами выясните оставшиеся две цифры. Если же на 16-й вопрос вам ответили «нет», то вам действительно не лгали, и уже полученные вами 15 цифр — верные (в противном случае ложь содержалась бы не в одном, а в двух ответах — в одном из первых 15 и в 16-м, а это противоречит условию). Тогда, чтобы узнать оставшиеся две цифры, достаточно пяти вопросов. Например, можно про каждую цифру спрашивать дважды, а если ответы противоречат друг другу, то задать тот же вопрос в третий раз.

1.13     Положим на правую чашку весов 1 монету из первого мешка, 2 монеты — из второго, 4 — из третьего, 8 — из четвертого и 16 — из пятого. На левую чашку положим 31 заведомо настоящую монету. «Фальшивые» мешки определяются по двоичной записи разности весов на чашках в этой записи разряды, в которых записана единица, соответствуют номерам мешков с фальшивыми монетами (проверьте это самостоятельно ). Например, если фальшивые монеты — в мешках под номерами 1, 2 и 5, то весы покажут разницу веса на чашках, равную 19 (1910 — 100112).

Дополнительное задание

Как решить задачу, если мешков — шесть, и в шестом тоже все монеты могут быть фальшивыми? Других монет, кроме имеющихся в этих мешках, нет. Но зато вспомним, что наши весы могут показывать и отрицательные значения (от —1 до —100 г).

1.14     Представим номера монет в виде трехразрядных двоичных чисел (табл. 01.5).


Таблица 01.5

Номе монеты

1

2

з

4

5

6

7

8

Условный номе монеты

О

1

2

З

4

5

6

7

Двоичное п е ставление

000

001

010

011

100

101

110

111

В первом взвешивании должны участвовать монеты, содержащие единицу в первом разряде; во втором — монеты с единицей во втором разряде; в третьем взвешивании участвуют монеты с единицей в третьем разряде. Результаты измерений будем записывать так: если общий вес монет равен 39 г, то во взвешиваемой группе содержится фальшивая монета, — тогда запишем 1 в соответствующий номеру измерения разряд; в противном случае запишем О. Полученное двоичное число будет однозначно определять номер фальшивой монеты.

Пример. Пусть фальшивая монета имеет номер 6. Ее условный номер: 510 — 1012, значит, эта монета будет участвовать в первом и в третьем взвешиваниях. При них весы покажут 39 г, а при втором взвешивании — 40 г, т. е. в результате получится двоичное число 101, соответствующее условному номеру фальшивой монеты.

Теперь, надеюсь, стало понятно, почему данная задача включена в главу, связанную с двоичной системой счисления, а не в главу с задачами на взвешивания.

Данное утверждение можно и строго доказать. Попробуйте сделать это.

Дополнительное задание

Аналогично можно решить следующую задачу: «Среди 9 монет необходимо найти одну фальшивую, пользуясь чашечными весами без гирь, если известно, что фальшивая монета весит больше настоящей » .

Правда, здесь надо использовать не двоичную систему, а... Впрочем, подумайте о решении сами!

1.15 Последовательность перекладывания дисков в случае, когда их 4, показана в табл. 01.6.


Таблица 01.6

 

Цифры

Перекладывается иск

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

11

 

 

 

 

 

12

 

 

 

 

 

13

 

 

 

 

 

14

 

 

 

 

 

 

 

 

 

 

 

                           с     

1.16

1. Нетрудно убедиться, что если число п есть степень двойки, то последним в круге останется человек, имевший (в исходной нумерации) номер 1.

П. Если число п — любое (например, 20), то:

1)                       сначала из круга выбывает какое-то количество людей до момента, пока в круге не останется число людей, равное степени двойки (в рассматриваемом примере — 16; это означает, что выбыло 4 человека, а среди них последним выбыл 8-й);

2)                       среди оставшихся 16 человек того, кто стоит первым после последнего выбывшего на этот момент, можно рассматривать как имеющего номер 1, и именно он, в соответствии с пунктом 1, останется последним в круге. Номер этого человека в исходной нумерации (в нашем примере)

В общем виде методика определения номера оставшегося человека такова: из общего количества участников нужно вычесть максимальную степень двойки, меньшую количества участников, полученную разность умножить на 2 и прибавить 1. Например, если в круге первоначально стоит 271 человек, то номер последнего оставшегося будет равен (271 — 256) х 2 + 1 = 31. Можно также использовать следующую методику нахождения искомого номера:

1)                число п перевести в двоичную систему;

2)                в полученном двоичном числе первую слева единицу приписать в конце (возможные начальные нули при этом не учитываются);

З) перевести получившееся число в десятичную систему счисления.

Проиллюстрируем ее на примерах п = 20 и п = 21 (табл. 01.7).


Таблица 01.7

Значение

 

Двоичное представление

 

Двоичное представление

Комментарий к расчетам

20

10100

21

10101

 

Соответствующая максимальная степень двойки (т)

16

10000

16

10000

 

Сколько человек выбыло к моменту, когда осталось т человек (и)

4

1 0 1 0 0

1 0 0 0 0

1 0 0

5

1 0 1 0 1

1 0 0 0 0

1 0 1

Исходное число п без первой единицы и возможных начальных нулей

Номер последнего выбывшего человека

8

1000

(в двоичной системе: 100 х 210)

10

1010

(в двоичной системе:

101 х 210)

Чтобы умножить на 210 и увеличить полученное число на 1, можно приписать к справа единицу

Номер человека, который останется в кругу последним

9

1001

(в двоичной системе:

100х210+1)

11

1011

(в двоичной системе:

101 х 210+ 1)

Обоснование этой методики расчетов приведено в последнем столбце таблицы.

Дополнительные задания

1.  Подумайте над вопросом: имеются ли в частном случае задачи Иосифа Флавия при К = 2 такие значения п, при которых последним в кругу останется человек с четным номером?

2.  Кот и Мыши


Коту снится, что его окружили тринадцать мышей. Двенадцать из них — серые, а одна — белая. Слышит кот, как кто-то говорит ему: «Мурлыка, ты можешь съедать каждую вторую мышку. Но отсчитывай их по кругу в одном направлении. Если ты начнешь счет с белой мыши, то какая будет съедена последней? А вот тебе вторая задача: если последней ты должен съесть белую мышку, то с какой МЫШКИ тогда нужно начать счет?»

Помогите коту решить эти две задачи, используя метод с записью чисел в двоичной системе счисления.

1.17     Существует 8 способов распределения десяти предметов на три кучки:

Из них семь обеспечивают выигрыш первому игроку и только один — второму.

Дополнительное задание

Самостоятельно убедитесь в справедливости последнего утверждения — найдите, в каком случае первый игрок проигрывает.

1.18     На первый взгляд связь между играми «ним» и «шоколадка» не видна. Но присмотримся повнимательнее к шоколадке, изображенной на рис. 1.9. Она состоит из 6 х 8 = 48 долек. Ее делят 5 вертикальных и 7 горизонтальных прямых. В результате левее

9— 1523

отмеченной дольки есть одна вертикальная полоска долек, а праВ ее нее — 4 полоски; выше отмеченной дольки есть 5 горизонтальных полосок, а ниже — 2.

Разложим теперь четыре кучки предметов: в первой — один предмет, во второй — 4, в третьей — 5 и в четвертой — 2. Будем после каждого хода в игре с шоколадкой брать предметы из этих кучек, причем если, скажем, мы отломили сверху полоску в З дольки, то берем из третьей кучки З предмета; если отломили справа полоску в одну дольку, то берем из второй кучки один предмет, и т. д. Заметим, что тогда, играя в «шоколадку», мы будем одновременно играть и в «ним», причем выигравший в «шоколадку» выиграет и в «ним». Но в «ним» мы играть уже научились, поэтому лучше будет поменять порядок ходов: сначала делать ход в игре «ним», а потом соответствующим образом разламывать шоколадку.

Итак, игра в «шоколадку» — это просто игра в «ним» на четырех кучках камней, и выигрышная стратегия здесь та же! Запишем числа 1, 4, 5 и 2 в двоичной системе счисления и найдем сумму единиц в каждом разряде (табл. 01.8).


Таблица 01.8

 

 

1

1

О

О

1

о

1

 

1

 

 

 

 

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

Таблица 01.9

 

 

1

1

О

О

1

о

1

2

о

2

Дополнительное задание

Самостоятельно подумайте над вопросом: при каких размерах шоколадки начинающий выигрывает при любом расположении отмеченной дольки?


!

Ответы к главе 2

2.1 Если присвоить черным и белым шарикам номера 1—4 (рассматривая их слева направо), то алгоритм решения задачи будет выглядеть так:

{ Заводим белый шарик № 4 в нишу

2 . БДТ.

{ Смещаем три белых шарика влево до упора (Шарик № 1}

5.     Б1<— .

{ Шарики №

6.     Б2е.

11 . Б З е.

{ Смещаем все черные шарики влево до упора) [Шарик № 1}

12. Ч 1 е.

16. Ч 1 е.

К Шарики № 2,            З,

17 . Ч 2 е.

29.      чае.

{ Выкатываем белый шарик № 4 из желоба}

30.      Б4Ј

31 .

Получаемая в результате ситуация показана на рис. 02.1.

Рис. 02.1

{ Перемещаем все черные шарики вправо (за нишу) 36.

55 .

{Перемещаем белый шарик № З вправо до ниши, а затем — в нее }

56. Б

60. Б

61. Б3Т.

{ Перемещаем все черные шарики влево (за нишу)

55. ч 1 е.

74. ч 4 е.

{ Выкатываем белый шарик № З из желоба)

75. Б3Ј 76.

80.

Ситуация после этих действий показана на рис. 02.2.

Рис. 02.2

{ Перемещаем все черные шарики вправо (за нишу)

81. Ч 4».

100. Ч 1».

{ Перемещаем белый шарик № 2 вправо до ниши, а затем

107 . Б2Т.

{ Перемещаем все черные шарики влево (за нишу) 108 . ч 1 е.

127 . ч 4 е.

{ Выкатываем белый шарик № 2 из желоба} 128 . Б2Ј

133 .

Получаемая в результате ситуация показана на рис. 02.3.

Рис. 02.3

{ Перемещаем все черные шарики вправо                НИШУ)

134 . ч 4

153. ч 1».

[Перемещаем белый шарик № 1 вправо до ниши, а затем

161 . БIТ.

Перемещаем все черные шарики влево (за нишу)

181. ч 4 е.

{ Выкатываем белый шарик № 1 из желоба} 182. БIЈ

187 .

Теперь, надеюсь, вы убедились, что с помощью алгоритма любой процесс распадается на простые и однообразные операции, а ведь именно из таких операций и состоит работа исполнителя всех действий, происходящих в компьютере, — его процессора!

2.2 Задача решается за следующие четыре перекладывания см. также рис. 02.4):

З . 4 к 1 (или 1

4 . 6 к В (или 8

Возможно также « симмет-

(3)

(1)

(2)

(4)

ричное» решение:

    1 .   

О

О

О

О

     2 .  

 

 

7,3

8,6

З . 5 к 8 (или 8  5).

          4 . З к 1 (или 1  з).                                 Рис. 02 4

2.3 Задача может быть решена несколькими способами. Минимальное количество действий в алгоритмах — 4. Вот несколько возможных алгоритмов:

1)

1 .

1

(3,

6 ) .

2 .

6

(4,

5 ) .

З .

5

(3,

1 ) .

4 .

2)

1

к

(5,

6 ) .

1 .

2

(5,

6 ) . 

2 .

4

(5,

2 ) .

з .

5

(1,

3 ) .

4 .

3)

1

к

(5,

4 ) .

1 .

4

(1,

2 ) .

2 .

5

(4,

2 ) .

з .

2

(3,

6 ) .

4 .

6

(2,

2.4

1. Монеты А, В и С необходимо переложить на новые места, показанные пунктирной линией (рис. 02.5).

Дополнительное задание

Возможно несколько вариантов алгоритма такого размещения (кроме представленного на рис. 02.5). Предлагаем читателям самим найти все эти варианты.

                 о о о

соооов

о о о

Рис. 02.5

Рис. 02.6

2. Задача решается за два перекладывания (на рис. 02.6 пунктирной линией показаны места, куда нужно переложить монеты, расположенные слева и справа во втором горизонтальном ряду).

Десять линий (рядов), о которых шла речь в условии задачи, найдите самостоятельно.

Возможен также вариант решения с перекладыванием монет, расположенных во втором вертикальном ряду.


2.5

2.5.1. Задача может быть решена несколькими способами. Один из возможных алгоритмов:

1 . 4  1. 7  з. з . 5 к 9.

4 . 2  6 (или 6 к 2).

8  10 (или 10 к 8).

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

7  10, 4 8, б    2, 5 к 9,

1 к З

не является «совсем другим», так как полностью повторяет указанный только что порядок распределения, если спички пронумеровать не слева направо, а справа налево. А вот существенно новым решением будет, например, следующее:

7 к 10

1

2.52. Здесь порядок перемещения спичек должен быть таким:

10 к з,

8 к 14,

7 к 14,

11     к 2, 13 к 15,

12     к 15.

Второе возможное решение:

10 к З,

8 к 14,

4 к 13,

11    к 14, 15 к 13,

12    к 2.

2.6

2.6.1. Основная идея алгоритма решения задачи — сначала собрать шашки в требуемом порядке на свободном месте слева. Это можно сделать за три хода (перемещения) — см. рис. 02. Та. После этого шашки можно разместить на тех же шести местах, что и в исходном положении, еще за три перемещения (рис. 02.76).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

з

4

5

6

 

 

 

 

 

 

 

 

 

 

 

 

2

з

1

 

 

4

5

6

 

 

 

 

 

 

 

 

 

 

 

 

2

з

1

5

6

4

 

 

 

 

 

О

О

О

 

 

 

 

6

4

2

з

1

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

4

2

з

 

 

 

 

1

5

 

 

 

 

 

 

 

 

 

 

 

 

2

з

6

4

 

 

1

5

 

 

 

 

 

 

 

 

 

 

1-й ход

2-й ход

3-й ход б) 4-й ход

5-й ход

6-й ход

                                                                             6       4      2      З      1      5

Рис. 02.7

265

Для случая, когда свободное место находится справа, задача решается «симметричными» перемещениями (на рис. 02.8 показаны три первых хода).

 

 

 

 

 

 

 

 

 

 

1

2

З

4

5

6

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

З

 

 

6

4

5

 

 

 

 

 

 

 

 

 

 

 

 

 

з

1

2

6

4

5

 

 

 

 

 

 

 

 

 

 

 

2             6    4          5          З          1

Рис. 02.8

2.62. Решение показано на рис. 02.9.

Исходное состояние

 

о

 

 

 

 

О

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

О

О

О

 

 

1-й шаг

2-й шаг

3-й шаг

4-й шаг

Рис. 02.9

2.6.3. Оптимальное решение для 10 шашек показано на рис. 02.10, для 12 шашек — на рис. 02.11, для 14 шашек — на рис. 02.12.

Исходное состояние

о о о о о о о о о

 

 

 

1-й шаг

2-й шаг

3-й шаг

              4-й шаг         

             5-й шаг        

Рис. 02.10

Исходное состояние

е

о о

о

о

е о е о о о

 

 

 

1-й шаг

       2-й шаг       

       3-й шаг      

 

 

 

 

 

 

 

 

 

о

о

о е е

4-й шаг

 

 

 

е е

о

о о о о о о

 

 

5-й шаг

Рис. 02.11

Исходное состояние

 

 

о

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

О

О

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

О

 

 

 

 

О

о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

о

о

о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

О

О

О

о

о о

о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

О

О

о

о

 

 

 

 

 

1-й шаг

2-й шаг

3-й шаг

4-й шаг

5-й шаг

6-й шаг

6-й шаг

Рис. 02.12

2.6.4. Решение показано на рис. 02.13:

 

 

 

О

О

 

 

О

 

О

 

 

О

 

О

 

О

 

 

О

 

О

О

 

 

 

о

О

 

 

 

о

 

О

 

 

 

 

 

 

О

 

 

О

 

о

 

 

 

 

 

О

 

 

 

Исходное состояние

1 -й шаг

2-й шаг

3-й шаг

4-й шаг

5-й шаг

6-й шаг

7-й шаг

8-й шаг

9-й шаг

1 О-й шаг

                                                              1      2         з 4        5

Рис.02.13

2.6.5. Решение (для шести шашек) показано на рис. 02.14.

 

 

 

 

 

 

О

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

о

 

 

 

 

 

 

о

 

 

 

О

 

 

О

 

 

 

О

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

О

 

 

о

 

 

 

О

 

 

О

О

 

 

О

 

 

о

 

 

 

 

 

 

о

 

 

 

 

 

 

Исходное состояние 1-й шаг

2-й шаг

3-й шаг

4-й шаг

5-й шаг

7-й шаг

8-й шаг

11-й шаг

12-й шаг

13-й шаг

14-й шаг

15-й шаг

Рис. 02.14

Для восьми шашек задача решается в 24 хода следующими пе-

ремещениями:

13)   7  5;     19) з  2;

14)   9  7;     20) 5  з;

15)   9;      21) 5;

10)  1 2;         16) 6  8;   22) 6  7;

11)  З 1;         17) 4  б;   23) 4  6; 12) 5 З;        18) 2  4;   24) 5  4.

Первое число здесь обозначает номер перемещаемой шашки, а второе — номер клетки, в которую она перемещается.

2.7      Возможный алгоритм решения задачи 2    2, 4—3,

4—А, 5—4, 5—3, 6—5, 6—4, 7—6, 7—5, 7—Б, 8—7 , 8—6, 8—5,

9—8, 9—7, 9—6, 1—9, 1—8, 1—7, 1—в, 9—7 9— ,           9, 9—10,

8—6, 8—7, 8—8, 8—9, 7—5, 7—6, 7—7, 7—8, 1—7 , 1—6, 1—5, 1—Б, 6—5, 6—6, 6—7, б—в, 5—4, 5—5, 5—6 5— 4—5, 4—6, 1—5, 1—4, 1—3, 1—А.

Дальнейший порядок перемещений очевиден.

2.8      Решение состоит из 13 ходов:

1) а2-с2•,

6) сЗ-еЗ-е5;

11) f5-f7-h7•,

2) al-cl-c3;

7) d3-d5-f5•,

12) f6-h6-h8•,

3) bl-b3-d3;

8) d4-f4-f6•,

13) g6-g8.

4) b2-d2-d4;

9) e4—e6—g6;

 

5) с2-с4-е4;

10) e5-g5-g7;

 

Примечание. При записи ходов использовалась так называемая «алгебраическая шахматная нотация», изобретенная Филиппом Стаммой (автором книги «Опыт шахматной игры», вышедшей в 1737 г. в Париже) и усовершенствованная немецким шахматистом М. Гиршелем в 1784 г. Согласно ее правилам, поля шахматной доски обозначаются двумя символами: буквой латинского алфавита, обозначающей вертикаль (слева направо от «а» до «h» — см. рис. 2.15), и арабской цифрой, обозначающей горизонталь (от 1 до 8, при счете от белых фигур к черным, а на бумаге — снизу вверх).

2.9      Алгоритм решения задачи состоит из 24 действий:

13)  7 в 5;        19) з в 2;

14)  9 в 7;        20) 5 в З;

15)  8 в 9;        21) 7 в 5;

10)  1 в 2;        16) 6 в 8;    22) 6 в 7;

11)  З в 1; 17) 6; 23) 4 в 6; 12) 5 в З; 18) 2 в 4; 24) 5 в 4.

2.10       Разместить зверей по их клеткам с соблюдением всех условий работник зоопарка может за 14 переселений, последовательность которых указана в табл. 02.1 (В — волк, Т — тигр, Л — лев, О — осел, П — пантера).

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

Таблица 02.1

 

Перемещение животного

 

Клетка

 

Общий вольер

 

2

 

4

5

 

Исходное азмещение

п

т

о

л

в

 

1

Лев общий вольер

п

т

о

 

в

л

2

Осел —» клетка № 4

п

т

 

о

в

л

З

Лев клетка № З

п

т

Л

о

в

 

4

Пантера —» общий волье

 

т

л

о

в

п

5

Тиг —» клетка № 1

т

 

л

о

в

п

6

Лев— клетка № 2

т

л

 

о

в

п

7

Осел клетка З

т

л

о

 

в

п

8

Волк —» клетка № 4

т

Л

о

в

 

п

9

Панте а клетка № 5

т

Л

о

в

п

 

10

Тигр —» общий вольер

 

Л

о

в

п

т

11

Лев клетка № 1

л

 

о

в

п

т

12

Осел клетка № 2

л

о

 

в

п

т

13

Волк —» клетка № З

л

о

в

 

п

т

14

Тигр —» клетка № 4

л

о

в

т

п

 

2.11       Задача изящно решается при помощи «метода пуговиц и нитей» , предложенного известным английским мастером головоломок Г. Дьюдени.

На каждое поле нашей маленькой доски, кроме центрального (на него кони попасть не могут), поместим по пуговице (на рис. 02.15а они изображены кружками). Если между двумя полями возможен ход конем, то лежащие в них пуговицы соединим нитью (на рис. 02.15а нитям соответствуют отрезки, соединяющие кружки). А затем весь полученный «клубок» пуговиц и нитей распутаем так, чтобы все пуговицы расположились по кругу (рис. 02.156).

Теперь решение задачи отыскивается почти автоматически. Выбрав одно из направлений движения по кругу, будем перестав-

                                    а)                                                 б)

Рис.02.15

271

лять по нему коней до тех пор, пока они не поменяются местами. Тогда необходимое перемещение коней по доске получится, если записать соответствующие пуговицам обозначения полей. Нетрудно убедиться, что решение состоит в 16 перемещениях коней (восьми белых и восьми черных), причем кони разного цвета могут ходить по очереди.

Дополнительное задание

Поставим теперь дополнительное условие — чтобы белые и черные кони при своем движении не угрожали друг другу (очередность ходов в этом случае можно нарушать). Самостоятельно найдите решение для этого случая.

2.12

Задача «АПЕЛЬСИН — СПАНИЕЛЬ»

Основные промежуточные состояния при решении показаны на рис. 02.16—02.18 , а результат — на рис. 02.19.

 

 

 

 

 

п

 

 

 

л

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

л

 

и

и

н

н

                     Рис. 02.16                                                           Рис. 02.17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

н

 

                    Рис. 02.18                                                          Рис. 02.19

'

(Один остроумный человек, долго мучавшийся с этой головоломкой, сказал автору так: «Решая эту задачу, я ПАСИНЕЛЬ»! 9)

Задача «ПЕРЕПРАВА»

За манипуляциями с карточками здесь удобнее следить, если два «П», два «Р», два «А» и два «Е» обозначить по-разному: «П» и «п» , «Р» и «А» и «а», «Е» и «е » (рис. 02.20-02.22).

 

 

п

 

 

 

е

 

 

 

 

 

 

 

 

 

 

 

 

 

в

а

 

 

п

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                        Рис, 02.20                                                    Рис. 02.21

 

 

 

 

 

 

 

 

 

п

е

р

Е

 

Р

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 02.22

 

 

273

Задача о мухе и слоне (см. сноску к заголовку задачи)

Задача решается следующим образом: «муха»                 «мура»

« тура»       «тара»      « кара »     « каре »        «кафе» — «кафр»

« каюр » «каюк» «крюк» — «урюк» — « УРОК » — «срок» « сток» «стон» — «слон». В результате муху удалось «превратить» в слона всего лишь за 16 ходов.

2.13 Авторские решения предложенных задач содержат следуюЩИе количества перекладываний:

1)   «АДРЕС» «СРЕДА» — 20;

2)   «ТРОПИК» «приток» — 20;

3)   «АТЛАС» «САЛАТ» — 22;

4)   «ПРИКАЗ» «КАПРИЗ» — 24 ;

       5) «сокол» «колос»      36;

6)    «ВОДОПАД» «ПОДВОДА» — 42;

7)    «ЛЕПЕСТОК» «ТЕЛЕСКОП» — 48;

8)    «ВЕРТИКАЛЬ» «КИЛЬВАТЕР»  64.

Может быть, вам удастся справиться с этими задачами быстрее?

2.14 Решение показано в табл. 02.2.

Таблица 02.2

Исходное состояние

7

8

9

4

5

6 1 2 3

1. Переставляем карточки 4, 5, 6, 1, 2, З

7

8

9

 

2

1 6 5 4

2. Переставляем карточки 7, 8, 9, З, 2, 1

1

2

З

9

8

7 6 5 4

З. Переставляем карточки 9, 8, 7, 6, 5, 4

1

2

з

4

5

6 7 8 9

З. Для упорядочивания п карточек не обязательно требуется (п — 1) проходов. Например, для 10 карточек, показанных на рис. 02.23, задача сортировки по возрастанию решается всего за три прохода.

Рис. 02.23

Дополнительное задание

Возникает новый вопрос: как «поймать» момент, когда числа на всех карточках (в программе — все элементы массива) стали упорядоченными, и прекратить бесполезные дальнейшие проходы?

Просмотр и сравнение соседних чисел после каждого прохода

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

Ответы к главе З

Таблица ОЗ. 1

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

 

Наполнить А

з

 

2

кз

Перелить из А в В

О

з

з

 

Наполнить А

з

з

4

кз

Перелить из А в В

2

4

3.2

Эта задача имеет два лучших (принципиально разных) решения, равнозначных с точки зрения количества команд (табл. 03.2 и 03.3).

Таблица 03.2

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

 

Наполнить А

з

 

2

кз

Перелить из А в В

О

з

з

 

Наполнить А

з

з

4

кз

Перелить из А в В

О

6

5

 

Наполнить А

з

6

6

 

Перелить из А в В

О

9

7

 

Наполнить А

з

9

8

 

Перелить из А в В

2

10

9

Кб

Вылить из В

2

 

10

кз

Перелить из А в В

О

2

11

 

Наполнить А

з

2

12

кз

Перелить из А в В

О

5


275

Таблица 03.3

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

К2

Наполнить В

О

10

2

 

Перелить из В в А

з

7

 

 

Вылить из А

О

7

4

 

Перелить из В в А

з

4

5

 

Вылить из А

о

4

6

 

Перелить из В в А

з

1

7

 

Вылить из А

О

1

8

 

Перелить из В в А

1

 

9

 

Наполнить В

1

10

10

 

Перелить из В в А

з

8

11

 

Вылить из А

О

8

12

 

Перелить из В в А

3

5

3.3

Таблица 03.4

 

Команда

Описание

А

в

 

 

Исходное состояние

о

о

1

 

Наполнить В

о

10

2

 

Перелить из В в А

4

 

з

 

Вылить из А

О

б

4

 

Перелить из В в А

4

2

5

1-(5

Вылить из А

О

2

Здесь также возможно несколько вариантов решения. В наилучшем варианте задача решается за 6 операций (табл. 03.5).

Таблица 03.5

 

Л)

Команда

Описание

А

в

с

 

 

 

 

Исходное состояние

О

о

О

 

 

1

кз

Наполнить С

О

О

12

 

 

2

 

Перелить из С в В

О

10

2

 

 

з

 

Вылить из В

О

О

2

 

 

4

 

Перелить из С в В

О

2

 

 

 

5

кз

Наполнить С

 

 

12

 

 

6

 

Перелить из С в В

 

 

4

 

 

 

276

3.5

Таблица 03.6

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

о

10

 

2

 

Перелить из В в С

О

О

10

з

 

Наполнить А

5

О

10

4

 

Перелить из А в С

з

О

12

5

 

Вылить из С

з

о

О

 

 

Наполнить В

з

10

 

7

 

Перелить из В в С

з

О

10

8

 

Перелить из А в С

1

О

12

Возможны также варианты, отличающиеся от приведенного выше порядком выполнения трех первых и трех последних команд.

3.6

Здесь оптимальных решений также может быть несколько. Один из вариантов приведен в табл. 03.7.

Таблица ОЗ. 7

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

О

5

 

2

кб

Перелить из В в А

4

1

 

з

k10

Вылить из А

О

1

 

4

 

Перелить из В в А

1

о

о

5

 

Наполнить С

1

о

10

6

кв

Перелить из С в А

4

 

7

3.7

Данная задача имеет два оптимальных варианта решения, представленных в табл. 03.8 и 03.9.

Таблица 03.8

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

к2

Наполнить В

О

5

 

2

 

Перелить из В в А

з

2

 

з

 

Перелить из В в С

З

о

2

4

 

Наполнить В

З

5

2

5

 

Перелить из В в С

з

 

7

Таблица 03.9

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

к2

Наполнить В

О

5

 

2

 

Перелить из В в С

О

О

5

З

к2

Наполнить В

о

5

5

4

кб

Перелить из В в А

 

 

 

5

 

Перелить из В в С

 

 

 

3.8

Здесь лучших вариантов также может быть несколько. Один из них приведен в табл. 03.10.

Таблица ОЗ. 10

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

 

Наполнить А

З

О

О

2

 

Перелить из А в С

О

о

з

з

 

Наполнить А

з

о

з

4

 

Перелить из А в С

о

О

6

5

 

Наполнить А

з

О

6

6

 

Перелить из А в С

 

 

9

3.9

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



Таблица ОЗ.

 

Команда

Описание

 

 

 

 

 

Исходное состояние

о

О

О

1

 

Наполнить А

 

О

О

2

 

Перелить из А в С

о

О

з

з

 

Наполнить А

З

О

з

4

 

Перелить из А в С

о

О

6

5

 

Наполнить А

 

О

6

6

 

Перелить из А в С

 

 

 

Для решения этой задачи использовано 9 л воды (здесь и далее в аналогичных задачах соответствующие объемы выделены курсивом).

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

3.10

Один из нескольких возможных оптимальных вариантов приведен в табл. 03.12.

Таблица ОЗ. 12

 

Команда

Описание

 

 

 

 

 

Исходное состояние

о

О

О

1

 

Наполнить В

о

6

 

2

 

Перелить из В в С

о

О

6

з

 

Наполнить В

о

6

6

4

 

Перелить из В в С

о

1

11

5

 

Наполнить А

з

1

11

6

 

Перелить из А в В

о

4

11

7

 

Вылить из С

о

4

 

8

 

Перелить из В в С

о

о

4

3.11

Таблица ОЗ. 13

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

о

10

 

2

 

Перелить из В в С

О

о

10

з

К2

Наполнить В

о

10

10

4

 

Перелить из В в С

пот

3.12

Оптимальные варианты приведены в табл. 03.14 и 03.15.


Таблица ОЗ. 14

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

о

7

 

2

Кб

Перелить из В в А

з

4

 

з

 

Перелить из В в С

З

о

4

4

к2

Наполнить В

з

7

4

5

 

Перелить из В в С

З

о

11

Таблица ОЗ. 15

 

Команда

Описание

А

в

с

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

О

7

 

2

 

Перелить из В в С

 

 

7

з

К2

Наполнить В

о

7

7

4

кб

Перелить из В в А

з

4

7

5

 

Перелить из В в С

З

о

11

3.13

Здесь возможно несколько оптимальных вариантов. Один из них представлен в табл. 03.16.

Таблица ОЗ. 16

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

к2

Наполнить В

 

 

 

2

кб

Перелить из В в А

4

1

 

з

 

Перелить из В в С

4

О

1

 

К2

Наполнить В

4

5

1

5

 

Перелить из В в С

 

о

6

3.14


Здесь также необходимо решить задачу, использовав минимально возможное количество воды. Алгоритмов, в которых используется 8 л воды, возможно четыре. Один из них приведен в табл. 03.17.

Таблица ОЗ. 17

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

кз

Наполнить С

 

 

8

2

 

Перелить из С в В

о

5

з

з

 

Перелить из В в А

4

1

з

4

 

Вылить из В

4

о

з

5

 

Перелить из А в В

о

4

з

6

 

Перелить из С в В

о

5

2

Кроме того, для данной задачи существует еще более эффективный с точки зрения общего количества используемой воды алгоритм. Он представлен в табл. 03.18.

Таблица ОЗ. 18

 

Команда

Описание

 

в

 

 

 

Исходное состояние

о

о

О

1

 

Наполнить В

о

5

О

2

Кб

Перелить из В в А

4

1

 

з

 

Перелить из В в С

4

О

1

4

 

Перелить из А в В

о

4

1

5

 

Наполнить В

 

1

6

 

Перелить из В в А

4

1

1

7

 

Перелить из В в С

4

О

2

Обратим внимание: при выполнении 5-й операции (команда к2) доливается только 1 л, так что общее количество используемой воды составляет всего 6 л (!).

3.15

Два возможных оптимальных алгоритма приведены в табл. ОЗ. 19 и 03.20.


Таблица ОЗ. 19

 

Команда

Описание

 

 

 

 

 

Исходное состояние

о

о

о

1

К2

Наполнить В

о

7

 

2

 

Перелить из В в А

4

З

 

з

 

Перелить из В в С

4

о

з

4

 

Наполнить В

4

7

з

5

 

Перелить из В в С

 

о

10

Таблица 03.20

 

Команда

Описание

 

 

 

 

 

Исходное состояние

о

О

О

1

К2

Наполнить В

О

7

 

2

 

Перелить из В в С

О

о

7

 

 

Наполнить В

о

7

7

4

 

Перелить из В в А

4

з

7

5

 

Перелить из В в С

4

 

 

3.16

Таблица 03.21

 

Команда

Описание

 

 

 

 

 

Исходное состояние

о

о

о

 

К2

Наполнить В

о

7

 

2

 

Перелить из В в А

4

З

 

 

кто

Вылить из А

о

З

 

4

 

Перелить из В в А

з

О

О

5

 

Наполнить В

з

7

 

6

 

Перелить из В в А

4

 

 

Возможен также целый ряд вариантов решения этой задачи за 7 операций.

3.17

В этой задаче возможно несколько оптимальных вариантов решения, один из которых представлен в табл. 03.22.

Таблица 03.22

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

О

8

 

2

 

Пе елить из ВВС

О

о

8

з

 

Наполнить А

4

о

8

4

 

Перелить из А в С

 

О

9

3.18


Таблица ОЗ. 23

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

О

8

 

2

 

Пе елить из В в С

О

о

8

з

К2

Наполнить В

О

8

8

4

 

Перелить из В в С

о

7

9

3.19

За минимальное количество действий (4) данная задача может быть решена несколькими способами. Один из представлен в табл. 03.24.

Таблица ОЗ. 24

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

 

Наполнить А

з

О

О

2

 

Пе елить из А в В

О

З

 

з

кз

Наполнить С

О

з

11

4

 

Перелить из С в В

 

 

 

3.20

Здесь возможно два оптимальных варианта решения (табл. ОЗ. 25 и 03.26).

Таблица 03.25

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

 

Наполнить В

О

6

 

2

 

Перелить из В в С

о

О

6

 

 

Наполнить В

О

6

6

4

 

Пе елить из В в С

О

2

10

5

Кб

Перелить из В в А

 

о

10

Таблица 03.26

 

Команда

Описание

 

 

 

 

 

Исходное состояние

 

 

 

1

кз

Наполнить С

 

о

11

2

к9

Перелить из С в В

 

 

 

З

 

Перелить из С в А

 

 

 

4

кто

Вылить из А

 

 

 

5

 

Перелить из С в А

 

 

 

3.21


Требованию решить задачу, использовав минимально возможное количество воды, удовлетворяют алгоритмы, при выполнении которых используется 12 л воды. Таких алгоритмов может быть несколько; один из них представлен в табл. 03.27.

Таблица 03.27

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

 

Наполнить В

 

6

 

2

 

Перелить из В в С

О

О

6

з

 

Наполнить В

О

6

6

4

 

Пе елить из В в С

 

 

11

5

 

Пе елить из В в А

1

о

11

6

 

Пе елить из С в В

 

 

 

 

 

Вылить из С

1

6

 

8

 

Пе елить из В вс

 

 

 

9

 

Перелить из А в С

 

 

 

3.22

В оптимальном варианте эта задача решается за 6 действий — так, как показано в табл. 03.28 и 03.29.

Таблица 03.28

 

Команда

Описание

 

 

 

 

 

Исходное состояние

 

 

 

 

 

Наполнить А

 

 

 

 

 

Перелить из А в В

 

 

 

 

 

Наполнить А

 

 

 

 

 

Перелить из А в В

 

 

 

 

 

Наполнить А

 

 

 

 

 

Перелить из А в В

 

 

 


Таблица 03.29

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

о

о

 

 

Наполнить С

 

о

10

 

 

Перелить из С в А

 

 

 

 

 

Перелить из С в В

 

 

 

 

 

Перелить из А в В

 

 

 

 

 

Перелить из С в А

 

 

 

 

 

Перелить из А в В

 

 

 

3.23

Здесь также требовалось решить задачу, использовав минимально возможное количество воды. В наилучших вариантах решения используется 9 л воды; один из таких вариантов показан в табл. 03.30.

Таблица 03.30

 

Команда

Описание

 

 

 

 

 

Исходное состояние

 

 

 

 

 

Наполнить А

 

о

о

 

 

Перелить из А в В

 

 

 

 

 

Наполнить А

 

 

 

 

 

Перелить из А в В

 

 

 

 

 

Наполнить А

 

 

 

 

 

Перелить из А в В

 

 

 

 

 

Перелить из А в С

 

 

 

 

 

Перелить из В в А

 

 

 

 

 

Перелить из А в С

 

 

 

 

 

Перелить из В в А

 

 

 

 

 

Перелить из А в С

 

 

 


285

3.24

Наилучшие алгоритмы решения этой задачи состоят из шести действий. Один из возможных оптимальных вариантов приведен в табл. 03.31.

Таблица 03.31

 

Команда

Описание

 

 

 

 

 

Исходное состояние

о

О

О

1

 

Наполнить А

з

О

О

2

 

Перелить из А в В

о

з

 

з

 

Наполнить А

з

З

 

4

 

Перелить из А в В

О

6

 

5

кз

Наполнить С

О

6

12

6

 

Перелить из С в В

О

8

10

3.25

Минимально возможное количество воды, используемое для решения этой задачи, равно 12 л. Один из наилучших вариантов показан в табл. 03.32.

Таблица 03.32

 

Команда

Описание

 

в

с

 

 

Исходное состояние

О

О

О

1

 

Наполнить В

О

9

 

2

 

Наполнить А

З

9

 

з

 

Перелить из А в С

О

9

з

4

 

Перелить из В в С

О

2

10

5

 

Перелить из С в А

з

2

7

6

к 12

Вылить из С

з

2

 

7

 

Перелить из А в С

о

2

з

8

 

Перелить из В в С

о

о

5

3.26

Требованию решить задачу, использовав минимально возможное количество воды, удовлетворяют алгоритмы, при выполнении которых используется 12 л воды. Таких алгоритмов может быть несколько; в табл. 03.33 представлен один из них.

Таблица 03.33

 

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

 

Наполнить В

О

9

 

2

 

Перелить из В в С

 

О

9

з

 

Наполнить А

з

О

9

4

 

Перелить из А в С

 

о

10

5

 

Перелить из С в В

2

9

1

6

 

Перелить из В в А

з

8

1

3.27

Лучшие алгоритмы решения этой задачи состоят из шести команд (см. табл. 03.34 и 03.35).

Таблица 03.34

 

Команда

Описание

А

в

с

 

 

Исходное состояние

о

О

О

1

 

Наполнить В

о

9

 

2

 

Перелить из В в С

 

 

9

з

 

Наполнить А

з

О

9

4

 

Перелить из А в С

1

о

11

5

 

Вылить из С

1

О

О

6

 

Перелить из А в С

О

о

1

Таблица 03.35

 

Команда

Описание

 

 

 

 

 

Исходное состояние

 

 

 

1

 

Наполнить А

 

 

 

2

 

Наполнить В

 

 

 

з

 

Перелить из А в С

 

 

 

4

 

Перелить из В в С

о

1

11

5

 

Вылить из С

о

1

 

6

 

Перелить из В в С

 

 

 

В них очередность выполнения первых четырех команд может быть и несколько иной, что дает еще ряд возможных вариантов решения.

Е 287 ,

3.28

Минимально возможное количество воды, используемое для решения этой задачи, равно 12 л. Один из возможных оптимальных вариантов приведен в табл. 03.36.

Таблица 03.36

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

 

Наполнить В

 

9

 

2

 

Перелить из В в С

 

 

9

з

 

Наполнить А

 

 

 

4

 

Перелить из А в С

1

о

11

5

 

Перелить из С в В

1

9

2

6

 

Вылить из С

1

 

 

7

 

Перелить из А в С

 

 

 

8

 

Перелить из В в С

О

о

1.0

3.29

Здесь решение крайне простое (см. табл. 03.37).

Таблица 03.37

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

 

 

1

кз

Наполнить С

О

о

11

2

 

Перелить из С в А

 

 

 

3.30

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

Таблица 03.38

Лђ

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

к2

Наполнить В

 

7

 

2

 

Перелить из В в С

О

О

7

з

К2

Наполнить В

 

 

 

4

 

Налить из В в С

о

2

12

5

 

Наполнить А

4

2

12

6

 

Перелить из А в В

 

 

12


информг

3.31

Таблица 03.39

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

 

Наполнить А

4

 

2

кз

Перелить из А в В

о

4

з

 

Наполнить А

4

4

4

кз

Перелить из А в В

О

8

5

 

Наполнить А

4

8

6

кз

Перелить из А в В

з

9

7

 

Вылить из В

З

 

8

кз

Перелить из А в В

о

з

9

 

Наполнить А

4

з

10

кз

Перелить из А в В

 

7

3.32

Таблица 03.40

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

К2

Наполнить В

о

11

2

 

Перелить из В в А

4

7

з

 

Вылить из А

О

7

4

 

Перелить из В в А

4

з

5

 

Вылить из А

О

з

6

 

Перелить из В в А

З

 

7

К2

Наполнить В

з

11

8

ка

Перелить из В в А

4

10

9

к5

Вылить из А

о

10

10

ка

Перелить из В в А

4

6

11

 

Вылить из А

О

6

12

 

Перелить из В в А

4

2

3.33

Таблица 03.41

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

 

Наполнить В

 

14

2

 

Пе елить из В в А

6

8

З

 

Вылить из А

о

8

4

 

Пе елить из В в А

6

2

5

 

Вылить из А

 

 

6

 

Пе елить изВвА

2

 

7

к2

Наполнить В

2

14

8

 

Перелить из В в А

6

 

3.34

Таблица 03.42

 

Команда

Описание

 

 

 

 

Исходное состояние

О

О

1

 

Наполнить А

з

 

2

кз

Пе елить из А в В

 

 

з

 

Наполнить А

з

з

4

кз

Пе елить из А в В

о

6

5

 

Наполнить А

з

6

6

кз

Перелить из А в В

1

8

3.35

В этой задаче возможно два наилучших решения, равнозначных с точки зрения количества действий (табл. 03.43 и 03.44).

Таблица 03.43

 

Команда

Описание

А

в

 

 

Исходное состояние

о

о

1

 

Наполнить А

з

 

2

кз

Пе елить из А в В

о

з

з

 

Наполнить А

з

з

4

кз

Пе елить из А в В

О

6

5

 

Наполнить А

З

6

6

кз

Перелить из А в В

1

8

7

 

Вылить из В

1

 

8

кз

Пе елить из А в В

о

1

9

 

Наполнить А

з

1

10

кз

Перелить из А в В

о

4

1523

        i                                                                                                        информ;

Таблица 03.44

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

 

Наполнить В

о

8

2

 

Перелить из В в А

з

5

з

 

Вылить из А

о

5

4

 

Перелить из В в А

з

2

5

 

Вылить из А

о

2

6

 

Перелить из В в А

2

 

7

К2

Наполнить В

2

8

8

 

Перелить из В в А

з

7

9

 

Вылить из А

О

7

10

 

Перелить из В в А

з

4

3.36

Таблица 03.45

 

Команда

Описание

А

в

 

 

Исходное состояние

О

о

1

 

Наполнить В

о

8

2

 

Перелить из В в А

7

1

з

 

Вылить из А

О

1

4

 

Перелить из В в А

1

 

5

 

Наполнить В

1

8

6

 

Перелить из В в А

7

2

7

 

Вылить из А

о

2

8

 

Перелить из В в А

2

 

9

К2

Наполнить В

2

8

10

 

Перелить из В в А

7

 

291

3.37

Таблица 03.46

 

Команда

Описание

 

 

 

 

Исходное состояние

О

О

1

 

Наполнить А

7

 

2

кз

Перелить из А в В

о

7

з

 

Наполнить А

7

7

4

кз

Перелить из А в В

2

12

5

 

Вылить из В

2

 

6

кз

Перелить из А в В

О

2

7

 

Наполнить А

7

2

8

кз

Перелить из А в В

О

9

9

 

Наполнить А

7

9

10

кз

Перелить из А в В

4

12

3,38

Таблица 03.47

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

 

Наполнить А

5

 

2

кз

Перелить из А в В

О

5

з

 

Наполнить А

5

5

4

кз

Перелить из А в В

4

6

5

 

Вылить из В

4

 

6

кз

Перелить из А в В

о

4

7

 

Наполнить А

5

4

8

кз

Перелить из А в В

з

6

3.39

Одно из возможных оптимальных решений представлено в табл. 03.48.


Таблица 03.48

 

Команда

Описание

 

 

 

 

 

Исходное сос тоян ие

О

О

О

1

кз

Наполнить С

О

о

11

2

к9

Перелить из С в В

О

6

5

з

 

Вылить из В

О

О

5

4

 

Перелить из С в В

О

5

 

5

кз

Наполнить С

О

5

11

6

 

Перелить из С в В

О

6

10

7

 

Перелить из С в А

 

6

7

3.40

Минимально возможное количество воды (15 л) используется в алгоритме, показанном в табл. 03.49.

Таблица 03.49

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

О

6

 

2

 

Перелить из В в С

О

О

6

з

К2

Наполнить В

О

6

6

4

 

Перелить из В в С

 

 

11

5

 

Перелить из В в А

 

о

11

6

 

Перелить из С в В

1

6

5

7

к 12

Вылить из С

1

6

 

8

 

Перелить из А в С

О

6

1

9

 

Перелить из В в С

О

О

7

10

 

Наполнить А

 

О

7

11

 

Перелить из А в С

О

о

10

3.41

За минимальное количество действий (8) задача может быть решена двумя способами (табл. 03.50 и 03.51).

293

Таблица 03.50

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

 

 

 

К2

Наполнить В

 

 

 

 

 

Перелить из В в А

 

 

 

 

кто

Вылить из А

 

 

 

 

 

Перелить из В в А

 

 

 

 

кто

Вылить из А

 

 

 

 

 

Перелить из В в А

 

 

 

 

 

Наполнить В

 

 

 

 

 

Перелить из В в А

 

 

 

Таблица 03.51

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

 

 

 

 

Наполнить В

 

 

 

 

 

Перелить из В в А

 

 

 

 

 

Перелить из А в С

 

 

 

 

 

Перелить из В в А

 

 

 

 

 

Перелить из А в С

 

 

 

 

кб

Перелить из В в А

 

 

 

 

К2

Наполнить В

 

 

 

 

кб

Перелить из В в А

 

 

 

3.42

Здесь возможно несколько оптимальных вариантов, один из которых представлен в табл. 03.52.

Таблица 03.52

 

Команда

Описание

 

 

 

 

 

Исходное состояние

 

 

 

 

 

Наполнить В

 

 

 

 

 

Перелить из В в С

 

 

 

 

к2

Наполнить В

 

 

 

 

 

Перелить из В в С

 

 

 

 

кб

Перелить из В в А

 

 

 

 

k12

Вылить из С

 

 

 

 

 

Перелить из В в С

 

 

 

3.43

Минимально возможный объем воды (12 л) используется при выполнении нескольких возможных алгоритмов. Один из них представлен в табл. 03.53.

Таблица 03.53

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

 

9

 

2

 

Пе елить из ВВС

 

 

9

з

 

Наполнить А

 

 

9

4

 

Пе елить из А вс

1

о

11

5

 

Вылить из С

1

О

О

6

 

Перелить из А в С

О

о

1

3.44

Здесь наилучшие алгоритмы содержат пять команд (табл. 03.54 и 03.55).

Таблица 03.54

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

 

 

1

кз

Наполнить С

О

о

11

2

 

Перелить из С в В

 

 

 

з

 

Перелить из С в А

2

9

 

4

кз

Наполнить С

2

9

11

5

 

Перелить из С в А

з

9

10

Таблица 03.55

 

Команда

Описание

А

в

с

 

 

Исходное состояние

О

О

О

1

кз

Наполнить С

О

о

11

2

 

Перелить из С в А

з

о

8

з

 

Перелить из С в В

з

8

 

4

кз

Наполнить С

з

8

11

5

 

Перелить из С в В

з

9

10

295

3.45

Наилучшие алгоритмы решения этой задачи состоят из семи команд, Один из них представлен в табл. 03.56.

Таблица оз. 56

 

Команда

Описание

 

 

 

 

 

Исходное сос тояние

О

О

О

1

К2

Наполнить В

О

7

 

2

 

Перелить из В в А

 

4

 

з

 

Перелить из В в С

з

о

4

 

 

Наполнить В

з

7

4

5

k10

Вылить из А

О

7

4

6

 

Перелить из В в А

 

 

 

7

 

Перелить из В в С

 

 

 

3.46

Минимальное количество воды, требующееся для решения этой задачи (11 л), обеспечивает алгоритм, который представлен в табл. 03.57.

Таблица ОЗ. 57

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

 

8

 

2

 

Перелить из В в А

 

5

 

 

 

Перелить из А в С

О

5

 

4

 

Перелить из В в А

 

 

 

5

 

Перелить из А в С

О

2

6

6

 

Наполнить А

З

2

6

7

 

Перелить из А в С

О

2

9

8

 

Перелить из В в А

2

 

 

9

 

Перелить из С в В

 

 

 

10

k12

Вылить из С

2

 

 

11

 

Перелить из В в С

2

 

 

12

 

Перелить из А в С

 

 

 

Возможны и другие алгоритмы, при выполнении которых также используется 12 л воды.

3.47

Таблица 03.58

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

0

1

 

Наполнить В

О

9

 

2

 

Перелить из В в С

 

О

9

з

 

Наполнить В

О

9

9

4

 

Перелить из В в С

 

7

11

3.48

Два алгоритма решения задачи, являющиеся наиучшими, показаны в табл. 03.59 и 03.60.

Таблица 03.59

 

Команда

Описание

 

 

 

 

 

Исходное состояние

 

 

 

1

кз

Наполнить С

 

 

9

2

 

Перелить из С в В

О

8

1

з

 

Перелить из С в А

1

8

 

4

кз

Наполнить С

1

8

9

5

 

Перелить из С в А

4

8

6

Таблица 03.60

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

кз

Наполнить С

 

 

9

2

 

Перелить из С в А

4

О

5

з

 

Перелить из С в В

4

5

 

4

кз

Наполнить С

 

 

 

5

 

Перелить из С в В

4

8

 

297

3.49

Таблица 03.61

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

 

Наполнить А

6

 

2

 

Перелить из А в В

О

6

з

 

Наполнить А

6

6

4

кз

Перелить из А в В

 

10

3.50

Оптимальные алгоритмы решения этой задачи насчитывают 10 команд (табл. 03.62 и 03.63).

Таблица 03.62

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

 

Наполнить А

6

 

2

кз

Перелить из А в В

О

6

з

 

Наполнить А

6

6

4

кз

Перелить из А в В

о

12

5

 

Наполнить А

6

12

6

кз

Перелить из А в В

2

16

7

 

Вылить из В

2

 

8

кз

Перелить из А в В

о

2

9

 

Наполнить А

6

2

10

кз

Перелить из А в В

 

 


инф(

Таблица ОЗ. 63

 

Команда

Описание

А

в

 

 

Исходное состояние

о

о

1

к2

Наполнить В

о

16

2

 

Перелить из В в А

6

10

з

 

Вылить из А

о

10

4

 

Перелить из В в А

6

4

5

к5

Вылить из А

о

4

6

 

Перелить из В в А

4

 

7

к2

Наполнить В

4

16

8

 

Перелить из В в А

6

14

9

 

Вылить из А

 

14

10

 

Перелить из В в А

6

8

3.51

Таблица 03.64

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

к2

Наполнить В

о

22

2

 

Перелить из В в А

6

16

з

 

Вылить из А

о

16

4

 

Перелить из В в А

6

10

5

 

Вылить из А

о

10

6

к4

Перелить из В в А

6

4

7

 

Вылить из А

о

4

8

 

Перелить из В в А

4

 

9

 

Наполнить В

4

22

10

 

Перелить из В в А

6

20

11

 

Вылить из А

о

20

12

 

Перелить из В в А

6

14

299

3.52

Таблица ОЗ. 65

 

Команда

Описание

А

в

 

 

Исходное состояние

о

о

1

 

Наполнить А

5

 

2

кз

Перелить из А в В

О

5

з

 

Наполнить А

5

5

4

кз

Перелить из А в В

2

8

5

Кб

Вылить из В

2

 

6

кз

Перелить из А в В

о

2

7

 

Наполнить А

5

2

8

кз

Перелить из А в В

 

7

9

 

Наполнить А

5

7

10

кз

Перелить из А в В

4

8

3.53

Таблица 03.66

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

К2

Наполнить В

о

10

2

 

Перелить из В в А

7

з

з

 

Вылить из А

о

з

4

 

Перелить из В в А

з

 

5

к2

Наполнить В

з

10

 

 

Перелить из В в А

7

 

7

 

Вылить из А

О

б

8

 

Перелить из В в А

6

 

9

К2

Наполнить В

6

10

10

 

Перелить из В в А

7

9

11

 

Вылить из А

О

9

12

 

Перелить из В в А

7

2

зоо

3.54

Таблица ОЗ. 67

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

 

Наполнить А

9

 

2

кз

Перелить из А в В

 

9

з

 

Наполнить А

9

9

4

кз

Перелить из А в В

7

11

5

 

Вылить из В

7

 

б

кз

Перелить из А в В

 

7

7

 

Наполнить А

9

7

8

кз

Перелить из А в В

5

11

3.55

Оптимальных алгоритма решения этой задачи возможно два (табл. 03.68 и 03.69).

Таблица оз. 68

 

Команда

Описание

А

в

 

 

Исходное состояние

О

О

1

 

Наполнить А

5

 

2

кз

Перелить из А в В

о

5

з

 

Наполнить А

5

5

4

кз

Перелить из А в В

о

10

5

 

Наполнить А

5

10

6

кз

Перелить из А в В

з

12

7

кб

Вылить из В

З

 

8

кз

Перелить из А в В

 

з

9

 

Наполнить А

5

з

10

кз

Перелить из А в В

о

8

11

 

Наполнить А

5

8

12

кз

Перелить из А в В

1

12

13

кб

Вылить из В

1

 

14

кз

Перелить из А в В

о

1

15

 

Наполнить А

5

1

16

кз

Перелить из А в В

о

6

 

Команда

Описание

 

 

 

 

Исходное состояние

О

О

 

 

Наполнить А

 

 

 

кз

Перелить из А в В

 

 

 

 

Наполнить А

 

 

 

кз

Перелить из А в В

 

 

 

Кб

Вылить из В

 

 

 

кз

Перелить из А в В

 

 

 

 

Наполнить А

 

 

 

кз

Перелить из А в В

 

 

 

 

Вылить из В

 

 

 

кз

Перелить из А в В

 

 

 

 

Наполнить А

 

 

 

кз

Перелить из А в В

 

 

Таблица 03.69

 

Команда

Описание

 

 

 

 

Исходное состояние

 

 

 

к2

Наполнить В

о

12

 

 

Перелить из В в А

 

 

 

 

Вылить из А

 

 

 

 

Перелить из В в А

 

 

 

 

Вылить из А

 

 

 

 

Перелить из В в А

 

 

 

К2

Наполнить В

2

12

 

 

Перелить из В в А

 

 

 

 

Вылить из А

 

 

10

 

Перелить из В в А

 

 

 

 

Вылить из А

 

 

 

 

Перелить из В в А

 

 

 

 

Наполнить В

4

12

 

 

Перелить из В в А

5

11

 

 

Вылить из А

о

11

 

 

Перелить из В в А

 

 

3.56

Таблица ОЗ. 70


3.57

Таблица ОЗ. 71

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

 

9

 

2

 

Перелить из В в С

О

О

9

 

 

Наполнить В

О

9

9

4

 

Перелить из В в С

о

8

10

3.58

Минимальное количество воды (12 л) используется при выполнении алгоритма, представленного в табл. 03.72.


Таблица ОЗ. 72

N2

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

О

9

 

2

 

Перелить из В в С

О

О

9

з

 

Наполнить А

 

 

 

4

 

Перелить из А в С

 

о

11

5

 

Перелить из С в В

1

9

2

6

 

Перелить из В в А

 

 

 

Три первые команды могут выполняться и в такой последовательности: к 1, к2, к 7.

3.59

Оптимальные алгоритмы решения задачи (их возможно несколько) содержат 7 команд. Один из них представлен в табл. 03.73.

Таблица ОЗ. 73

Л)

Команда

Описание

 

 

 

 

 

Исходное состояние

о

о

О

1

 

Наполнить А

4

о

о

2

 

Перелить из А в В

о

4

 

з

 

Наполнить А

 

 

 

4

 

Перелить из А в В

з

5

 

5

 

Перелить из А в С

 

 

 

6

 

Наполнить А

4

5

з

7

 

Перелить из А в С

 

 

 

Возможен также аналогичный алгоритм, в котором предпоследней является команда кб (перелить из В в А).

3.60

Наилучший вариант алгоритма представлен в табл. ОЗ. 74. В нем используется всего 8 л воды. Возможны и другие алгоритмы, использующие 8 л воды, но с ббльшим числом операций.


Таблица ОЗ. 74

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

о

О

1

k1

Наполнить А

4

О

О

2

ка

Перелить из А в В

О

4

 

з

 

Наполнить А

4

4

 

4

 

Перелить из А в В

 

 

 

5

 

Перелить из А в С

О

5

з

6

кб

Перелить из В в А

4

1

з

7

 

Перелить из А в С

О

1

7

3.61

Оптимальные алгоритмы содержат всего четыре команды (табл. 03.75 и 03.76).

Таблица ОЗ. 75

 

Команда

Описание

 

 

 

 

 

Исходное состояние

О

О

О

1

К2

Наполнить В

О

8

 

2

 

Перелить из В в С

О

о

8

з

 

Наполнить А

4

О

8

4

 

Перелить из А в С

 

О

9

Таблица ОЗ. 76

 

Команда

Описание

 

 

 

 

 

Исходное состояние

о

О

О

1

 

Наполнить А

4

О

О

2

 

Перелить из А в С

О

о

4

з

 

Наполнить В

О

8

4

4

 

Перелить из В в С

 

 

 

3.62

Минимальное количество воды, требующееся для решения этой задачи, составляет 6 л. Возможно несколько вариантов соответствующих алгоритмов, один из которых представлен в табл. ОЗ. 77.

Таблица ОЗ. 77

 

Команда

Описание

А

в

с

 

 

Исходное состояние

О

О

О

1

 

Наполнить А

З

о

о

2

 

Перелить из А в В

о

з

 

з

 

Наполнить А

З

з

 

4

 

Перелить из А в В

1

5

 

5

 

Перелить из В в С

1

О

5

6

 

Перелить из А в В

О

1

5

7

 

Перелить из С в А

з

1

2

8

 

Перелить из А в В

о

4

2

3.63


Таблица ОЗ. 78

 

Команда

Описание

А

в

 

 

Исходное состояние

о

о

1

 

Наполнить А

 

 

2

кз

Перелить из А в В

О

5

з

 

Наполнить А

5

5

4

кз

Перелить из А в В

о

10

5

1-(1

Наполнить А

5

10

6

кз

Перелить из А в В

о

15

7

 

Наполнить А

5

15

8

кз

Перелить из А в В

4

16

9

кб

Вылить из В

4

 

10

кз

Перелить из А в В

о

4

11

 

Наполнить А

 

 

12

кз

Перелить из А в В

О

9

3.64

Здесь наилучших решений возможно два (табл. 03.79 и 03.80).



Таблица ОЗ. 79

 

Кома

а

Описание

А

В

 

 

 

Исходное состояние

О

О

1

К2

 

Наполнить В

о

16

2

 

 

Пе елить из В в А

5

11

з

 

 

Вылить из А

о

11

4

 

 

Пе елить из В в А

5

6

5

 

 

Вылить из А

 

 

6

 

 

Пе елить из В в А

5

1

7

 

 

Вылить из А

 

 

8

 

 

Пе елить из В в А

 

 

9

К2

 

Наполнить В

1

16

10

 

 

Пе елить из В в А

5

12

11

 

 

Вылить из А

о

12

12

 

 

Пе елить из В в А

 

 

13

 

 

Вылить из А

 

 

14

 

 

Пе елить из В в А

 

 

15

 

 

Вылить из А

 

 

16

 

 

Пе елить из В в А

 

 

17

 

 

Наполнить В

2

16

18

 

 

Пе елить из В в А

5

13

19

 

 

Вылить из А

о

13

20

 

 

Пе елить из В в А

5

8

Таблица ОЗ. 80

 

Кома

а

Описание

 

 

 

 

 

Исходное состояние

О

 

1

 

 

Наполнить А

 

 

2

кз

 

Пе елить из А в В

о

5

з

 

 

Наполнить А

5

5

4

кз

 

Пе елить из А в В

о

10

5

 

 

Наполнить А

5

10

6

кз

 

Пе елить из А в В

о

15

7

 

 

Наполнить А

5

15

8

 

 

Пе елить из А в В

4

16

9

 

 

Вылить из В

4

 

10

кз

 

Пе елить из А в В

 

 

11

 

 

Наполнить А

 

 

12

кз

 

Пе елить из А в В

 

 

13

 

 

Наполнить А

 

 

 

кз

 

Пе елить из А в В

о

14

15

 

 

Наполнить А

5

14

16

кз

 

Пе елить из А в В

з

16

17

 

 

Вылить из В

 

 

18

кз

 

Пе елить из А в В

о

з

19

 

 

Наполнить А

5

з

20

кз

 

Пе елить из А в В

о

8

Ответы к главе 4

4.1 Сначала надо всю крупу (9 кг) разделить на две равные части по 4,5 кг (это можно сделать и без использования весов). Затем одну из частей весом 4,5 кг также надо разделить на две равные части по 2,25 кг (для этого тоже весы не нужны). После этого из порции крупы весом 2,25 кг нужно последовательно отвесить на весах:

1) 100 г; 2) 100 г; 3) 50 г.

В результате в указанной порции останется 2 кг, а вес всей остальной крупы составит (4,5 + 2,25 + 0,1 + 0,1 + 0,05) 7 кг (либо можно вести подсчет и так: 9 — 2 = 7 кг).

4.2 Сначала рассыпаем гвозди на две одинаковые кучки по 12 кг. Затем одну из этих кучек делим пополам, а потом еще раз пополам. Полученные З кг откладываем в сторону и получаем в остатке 9 кг.


4.3 Можно. Будем весь ранее взвешенный сахар ссыпать на правую чашку (и на нее же иногда будем класть гирьку), а отмеряемый сахар будем сыпать на левую чашку (см. табл. 04.1).

Таблица 04.1

Номер взвешивания

1

2

з

4

5

6

7

8

9

10

Левая чашка

 

 

 

8

16

31

63

125

250

500

Правая чашка

г

 

 

 

 

31

62+г

125

250

500

Примечание. Буквой «г» обозначена гирька.

После 10-го взвешивания, ссыпав вместе весь сахар на правой и левой чашках, получим искомый 1 кг,

Очевидно, что меньшим количеством взвешиваний обойтись нельзя: из табл. 04.1 видно (см. взвешивания 1—5), что при К-м взвешивании можно получить (2 k — 1) граммов сахара. Таким образом, за 9 взвешиваний можно отмерить самое большее 511 граммов.

4.4 Задача решается в два этапа:

1)                       надо положить на одну чашку весов гирю в 1 кг и уравновесить ее с помощью имеющихся «правильных» гирь;

2)                       затем нужно заменить килограммовую гирю таким количеством муки, чтобы весы оставались в равновесии.

4.5 Пронумеруем оставшиеся гири по возрастанию их размера.

Произведем первое взвешивание: на левую чашку весов положим гири N2 З и N2 4, а на правую — .N2 7.

Прежде чем рассматривать возможные случаи состояния весов, заметим, что гиря N2 З может иметь вес З или 4 кг, гиря N2 4 — 4 или 5 кг, а гиря N2 7 — 7 или 8 кг. Приведем также все возможные варианты сочетания этих гирь на разных чашках весов (табл. 04.2).

Таблица 04.2

Г•.Г2

Левая чашка весов

Правая чашка весов

Гири весом

Общий вес

Гиря весом

1

З и 4 кг

7 кг

7 кг

2

Зи 5 кг

8 кг

7 кг

з

4 и 5 кг

9 кг

7 кг

4

З и 4 кг

 

8 кг

5

Зи 5 кг

 

8 кг

6

4 и 5 кг

9 кг

 

Возможные случаи при таком взвешивании.

1.                      


Весы в равновесии. Это может быть при вариантах 1 и 5. Можно видеть, что в первом случае веса гирь соответствуют их номерам, т. е. потеряна гиря весом 8 кг, а во втором — потеряна гиря весом 4 кг (так как гиря № 4 весит 5 кг). Чтобы определить, какая гиря потеряна, надо на одну чашку весов положить гири N2 1 и З, а на вторую — .N2 4. Первая чашка перевесить не может. Если перевесит вторая чашка, то потеряна гиря весом 4 кг, а в случае равновесия — весом 8 кг.

2.                       Если перевесит левая чашка весов, то, рассматривая варианты З и 6, можно установить, что потерянной может быть гиря весом 1, 2 или З кг. При втором взвешивании на первую чашку надо положить гири 1 и .N2 2, а на вторую — № З. Если перетянет первая чашка, то потеряна гиря весом 1 кг; если вторая — весом З кг; если весы в равновесии — 2 кг.

З. Если перевесит правая чашка весов, то потеряна гиря весом 5, 6 или 7 кг. Тогда на одну чашку положим гири № 4 и N2 7, а на вторую N2 5 и N2 6. Если перевесит первая чашка, то потеряна гиря весом 7 кг; если весы в равновесии — весом 6 кг; если перевесит вторая чашка — 5 кг.

4.6          По условию, общий вес всех гирек из сплава Б меньше, чем из сплава А. Гирьки из сплава Б не могут весить меньше, чем 1 + 2 + + 9 = 45 г ( идБ 45), а гирьки и из сплава А не могут весить больше, чем 11 + 12 + ... + 19 = 135 г (ИДА 135). Если хотя бы одно из этих неравенств было строгим, то вес гирек из сплава А превышал бы вес гирек из другого сплава более чем на 90 г. Значит, все гирьки из сплава Б весят 45 г, а из сплава А — 135 г. А это возможно, только если они, соответственно, девять самых легких и девять самых тяжелых. Значит, золотая гирька весит 10 г.

4.7          Идея решения состоит в том, чтобы каким-то образом уменьшать количество монет так, чтобы настоящих среди них по-прежнему оставалось больше, чем фальшивых.

Тогда рано или поздно вы дойдете до того момента, когда монет останется всего одна или две. Настоящих же среди них по-прежнему будет больше, чем фальшивых. Поэтому все они будут настоящие и, следовательно, — ваши (Э.

Рассмотрим два случая.

1.  Если количество имеющихся монет четно.


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

2.  Если количество имеющихся монет нечетно.

Разобьем их на пары и еще одну монету отложим. Произведем взвешивания в каждой паре и подсчитаем количество равенств. Если оно нечетно, то отберем, как и прежде, по одной монете из каждого равенства (напомним, что равенств среди настоящих монет не может быть меньше, чем среди фальшивых). Если же количество равенств четно, то возьмем оставленные нам владельцем весов монеты из этих равенств и добавим к ним отложенную монету. Настоящих монет опять будет больше, чем фальшивых.

4.8        Можно. Надо сравнить на весах вес двух любых монет. Если весы будут в равновесии, то фальшивая монета — та, которая не участвовала во взвешивании; в противном случае она — более легкая из сравниваемых монет.

4.9        Алгоритм решения задачи следующий:

1) разделить все монеты на З кучки по 27 монет в каждой; 2) сравнить на весах две любые кучки (первое взвешивание).

При этом можно выявить кучку, в которой находится фальшивая монета (если весы будут в равновесии, то она — в кучке, не участвовавшей во взвешивании; в противном случае она находится в той кучке, которая легче);

З) разделить монеты из выявленной кучки на З кучки по 9 монет в каждой;

4) сравнить на весах две любые кучки по 9 монет (второе взвешивание). При этом можно выявить кучку, в которой находится фальшивая монета;

5) разделить монеты из выявленной кучки на З кучки по З монеты в каждой;

6) сравнить на весах две любые кучки по З монеты (третье взвешивание). При этом можно выявить кучку из трех монет, в которой находится фальшивая монета;

7) сравнить на весах две любые монеты из выявленной кучки и найти фальшивую монету (см. предыдущую задачу).

Дополнительное задание

При решении этой задачи заодно возникают следующие вопросы:

1)                       можно ли описанным способом найти фальшивую монету, если общее число монет не является степенью тройки (например, если оно равно 55)?

2)                      


за какое наименьшее количество взвешиваний всегда можно найти фальшивую монету среди п монет?

4,10 Положим на каждую чашку весов по пятьдесят монет.

Если чашки уравновесились, то оставшаяся 101-я монета фальшивая. Сравнивая ее на весах с любой из настоящих монет, можно узнать, легче она или тяжелее их.

Если при первом взвешивании весы не находятся в равновесии, то возьмем 50 монет с более тяжелой чашки, разделим их на две кучки по 25 монет и положим на чашки весов. Если весы уравновесятся, то фальшивая монета находилась на чашке, которая при первом взвешивании оказалась легче, и она (монета) — легче настоящих. Если же при втором взвешивании весы не уравновесятся, то среди сравниваемых 50 монет есть фальшивая, и она — тяжелее настоящих.

Возможны и другие варианты решения. Например, можно разделить сначала все монеты на З кучки: две — из 33 монет и одну — из 35.

Первым взвешиванием сравниваем на весах две кучки по 33 монеты. Если при этом весы уравновесились, то все сравниваемые монеты — настоящие, а фальшивая монета находится в кучке из 35 монет. Чтобы определить, легче или тяжелее она, чем настоящие, надо сравнить на весах вес третьей кучки монет и кучки из 35 любых монет, которые являются заведомо настоящими.

Если же при первом взвешивании весы не уравновесились, то в какой-то из сравниваемых кучек — фальшивая монета, а в кучке из 35 монет — все монеты настоящие. Запомнив, каким было положение чашек весов при первом взвешивании, возьмем любую из кучек монет, использованных при этом взвешивании, и сравним ее вес с весом 33 монет из третьей кучки (т. е. с настоящими монетами). Если при втором взвешивании весы уравновесились, то фальшивая монета находится в неиспользованной кучке, и осталось только вспомнить, больше или меньше весила кучка с фальшивой монетой при первом взвешивании. Если же весы не уравновесились, то поскольку мы знаем, что на одной чашке весов все монеты — настоящие, можно легко определить, больше или меньше настоящей весит фальшивая монета, находящаяся на другой чашке.

Нетрудно догадаться, что возможны и иные варианты деления 101 монеты на три кучки для решения задачи: 49, 49 и З; 48, 48 и 5' • 32, 32 и 37; 31, 31 и 39,

Дополнительное задание


Предлагаем читателям самостоятельно определить последнюю тройку чисел в этой последовательности.

4.11 Надо все монеты, кроме одной, разделить на 25 пар и последовательно сравнивать веса монет в каждой паре. Если при каком-то взвешивании равновесие нарушится, то более легкая монета и является фальшивой. В противном случае фальшивая монета — та, что осталась «без пары» .

Ясно, что аналогично решается и задача в общем виде: «Найти фальшивую монету в группе из (2m + 1) монет за т взвешиваний, взвешивая каждую монету не более одного раза» .

4.12

2. Сначала положим на обе чашки весов по 13 монет. Затем (если весы находятся в равновесии) уберем их и положим по 11 из еще не бравшихся монет; затем по 9, 7, 5, З и 1 до тех пор, пока одна из чашек не перевесит. Если этого не произойдет, то после седьмого взвешивания (когда на чашках весов будет по одной монете) останется одна, 99-я по счету, монета, которая во взвешиваниях не участвовала. Она и является фальшивой.

Если же при каком-то взвешивании какая-то чашка весов перевесила, то прежде всего ясно, что в этот момент фальшивая монета лежит в другой чашке. Составим таблицу взвешиваний (табл. 04.3).

Таблица 04.3

Номер взвешивания (К)

1

2

з

4

5

6 7

Количество монет на одной чашке (п)

13

11

9

7

5 3

1

Итак, при очередном, К—м взвешивании мы можем выявить п монет, среди которых находится искомая фальшивая. Тогда можно записать, что п = (7 — К) • 2 + 1. Получается, что мы пришли к задаче нахождения среди (7 — К) • 2 + 1 монет фальшивой монеты за (7 — К) взвешиваний (так как К взвешиваний уже проведено, причем каждая монета в рассматриваемой группе взвешивалась один раз).

Введем новую величину: т = 7 — К. Тогда только что сформулированная задача сводится к следующей: «среди (2m + 1) монет найти фальшивую монету за т взвешиваний (среди трех монет за одно взвешивание; среди пяти монет — за два• • среди тринадцати — за 6). При этом никакую монету нельзя взвешивать более одного раза» .


Такую задачу мы уже знаем (см. решение предыдущей задачи). Надо все монеты, кроме одной, разбить на т пар и последовательно сравнивать веса монет каждой пары — для этого понадобится т взвешиваний. Если при каком-то взвешивании равновесие нарушится, то более легкая монета и является фальшивой. В противном случае фальшивая монета — та, что осталась «без пары» .

4.13 Положим на каждую чашку весов по 20 монет.

1.                        Если весы в равновесии, то среди сравниваемых 40 монет либо нет ни одной фальшивой, либо содержатся обе фальшивые монеты, причем по одной в каждой чашке.

Разделим одну из этих групп монет на две равные части (по 10 монет) и сравним их веса:

1.1)                если одна из чашек весов перевесит, то среди этих 20 монет есть ровно одна фальшивая, а среди 21 монеты, не участвовавшей во взвешиваниях, фальшивых монет нет. Соотношение весов 20 монет, среди которых есть фальшивая, и 20 монет из 21 оставшейся будет соответствовать соотношению весов фальшивой и настоящей монет;

1.2)                если весы будут в равновесии, то среди этих 20 монет (и всех 40 монет, участвовавших в первом взвешивании) нет ни одной фальшивой, а все фальшивые монеты находятся среди оставшихся 21. Выберем из 40 заведомо настоящих монет 21 монету и положим на одну чашку весов, а на вторую положим оставшиеся 21 монету. Соотношение весов будет соответствовать соотношению весов настоящей и фальшивой монет.

2.                        Если при первом взвешивании одна чашка перевесит другую, то среди 40 взвешенных монет одна или две — фальшивые, причем обе фальшивые находятся на одной чашке. Разделим 60лее тяжелую группу монет на две равные части (по 10 монет) и положим на чашки весов (второе взвешивание). Тогда:

2.1)                если весы в равновесии, то либо фальшивых монет в этой группе из 20 монет нет, либо их две, по одной в каждой чашке. Разделим кучку монет с одной из чашек на две равные части (по 5 монет) и сравним их веса. Возможные варианты:

   весы в равновесии — тогда фальшивых монет в данной кучке нет, а в более легкой (при первом взвешивании) кучке одна или две — фальшивые; значит, фальшивая монета легче настоящей,

   одна из чашек перевесила — тогда среди этих 20 монет находятся обе фальшивые монеты, а в более легкой кучке их вообще нет; значит, фальшивая монета — более тяжелая;

2.2) если при втором взвешивании одна из чашек перевесит, то среди этих 20 монет есть хотя бы одна фальшивая. Значит, фальшивая монета — более тяжелая (ведь мы отобрали более тяжелую группу монет).


4.14 Задача решается аналогично задаче 4.13.

Положим на каждую чашку весов по 34 монеты.

1. Если весы в равновесии, то среди сравниваемых 68 монет либо нет ни одной фальшивой, либо есть обе фальшивые, по одной монете в каждой чашке.

Разделим одну из этих групп монет на две равные части (по 17 монет) и сравним их веса:

1.1)                если одна из чашек весов перевесит, то среди этих 34 монет есть ровно одна фальшивая, а среди 35 монет, не участвовавших во взвешиваниях, фальшивых монет нет. Тогда соотношение весов 34 монет, среди которых есть фальшивая, и 34 монет из 35 оставшихся заведомо настоящих будет соответствовать соотношению весов фальшивой и настоящей монет;

1.2)                если весы будут в равновесии, то среди этих 34 монет (и всех 68 монет, участвовавших в первом взвешивании) нет ни одной фальшивой, а все фальшивые монеты находятся среди оставшихся 35. Выберем из заведомо настоящих 68 монет 35 и положим на одну чашку весов, а на вторую положим оставшиеся 35 монет. Соотношение весов будет соответствовать соотношению весов настоящей и фальшивой монет.

2. Если при первом взвешивании одна из чашек перевесит, то среди 68 взвешенных монет одна или две — фальшивые, причем обе фальшивые монеты находятся на одной чашке. Разделим 60лее тяжелую группу монет на две равные части (по 17 монет) и положим на чашки весов (второе взвешивание). Тогда:

2.1)                если весы в равновесии, то либо фальшивых монет в этой группе из 34 монет нет, либо их две, по одной в каждой чашке. Разделим кучку монет с одной из чашек на две равные части (по 5 монет) и сравним их веса. Возможные варианты:

   весы в равновесии — тогда фальшивых монет в данной кучке нет, а в более легкой (при первом взвешивании) кучке одна или две фальшивые; значит, фальшивая монета легче настоящей,

   одна из чашек перевесила — тогда среди этих 20 монет находятся обе фальшивые, а в более легкой кучке их вообще нет; значит, фальшивая монета — более тяжелая;

2.2) если при втором взвешивании перевесит одна из чашек, то среди этих 34 монет есть хотя бы одна фальшивая. Значит, фальшивая монета — более тяжелая (ведь мы отобрали более тяжелую группу монет).

4.15 Разобьем монеты на следующие группы: А — три серебряных;

В — одна серебряная;


С — еще одна серебряная;

D — две золотых;

Е — три золотых.

Сравним вес монет группы А и монет из групп С и D. При этом возможны три варианта.

1.Весы в равновесии. Тогда сравним при втором взвешивании между собой две монеты из группы D. Если и тут наблюдается равновесие, то среди этих двух монет нет фальшивой. Это также означает, что фальшивой нет и среди монет групп А и С (иначе не было бы равновесия весов при первом взвешивании). Следовательно, оставшаяся «серебряная» монета из группы В — фальшивая. Вторая же фальшивая монета («псевдозолотая») может находиться только в группе Е. Ее можно найти за одно взвешивание. Если же при втором взвешивании равновесия весов нет, то более легкая из сравниваемых монет группы D — фальшивая. Вторая фальшивая монета при этом — среди монет группы А (иначе не было бы равновесия весов при первом взвешивании), и ее можно найти за одно (третье) взвешивание.

2.Группа монет А легче монет групп С и D, Значит, одна из монет в А — фальшивая, и при этом в группах С и D фальшивых монет нет. Вторая фальшивая монета («псевдозолотая») находится в группе Е. С группами А и Е можно «разобраться» еще за два взвешивания.


 

314

З. Группа монет А тяжелее монет групп С и D. В этом случае в группе А фальшивых монет нет (напомним, что фальшивые монеты легче настоящих). Тогда сравним между собой монеты из группы D. Если весы будут в равновесии, то фальшивая монета в группе С, а среди монет группы D фальшивых нет, т. е. вторая фальшивая монета («псевдозолотая») находится в группе Е. Ее можно найти за одно взвешивание. Если же при втором взвешивании равновесия весов нет, то более легкая из сравниваемых монет — фальшивая, а среди монет групп А и Е фальшивых нет. Вторую фальшивую монету можно найти, сравнив группы В и С.

4.16 Присвоим монетам номера: 1, 2 6 и обозначим их вес, соответственно, как т 1, т2 тб.

При первом взвешивании на левой чашке весов разместим монеты 1, 2 и З, а на правой — монеты 4, 5 и 6. Тогда все возможные варианты состояния весов и выявленные при этом фальшивые монеты приведены в следующей алгоритмической записи:

Первое взвешивание т1 + п2 + т З ? та + т5 + тб

1 .

если rn1 + т2 + ТЗ ОТ4+ Т5 + Пб то 1 На обеих чашках находится по одной фальшивой монете

Второе взвешивание

1711 о т2 Можно сравнить и другие монеты если п1 = т2 то

Первая фальшивая монета иначе если т1 > т2 то

Первая фальшивая монета     2 иначе

                    Первая фальшивая монета         1

все

Третье взвешивание о п5 ! Можно сравнить и другие монеты если      т5 то

Вторая фальшивая монета 6 иначе если па > ТЕ) то

                    Вторая фальшивая монета         5

иначе

Вторая фальшивая монета  4 все все

2 .

если [711 + т2 + тз < 714 + т5 + тб

то t если

 

то

все

Обе фальшивые монеты находятся на левой чашке весов взвешивание

1711 т2 1 Можно сравнить и другие монеты

Фальшивые монеты — 1 и 2 иначе если п1 то

Фальшивые монеты          2 и з иначе

Фальшивые монеты все

З. если п1 + п2 + т3Оп4+ п5 + тб то Обе фальшивые монеты находятся на правой чашке весов

Далее все аналогично случаю 2

I Второе взвешивание все

4.17 Обозначим монеты как а, Ь, с и d. При первом взвешивании сравним веса пар {а, b} и {с, d}; при втором взвешивании — веса пар {а, с} и {b, d}; при третьем — веса пар {а, d} и ф, с}. Рассмотрим (в табл. 04.4) все возможные состояния наших «странных» весов при всех возможных вариантах (символ «<» означает, что перевешивает правая чашка весов, символ «>» — что левая).

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

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

316

Таблица 044

Какая монета фальшивая?

Ее особенности

1-е взвешивание

2-е взвешивание

3-е взвешивание

Левая чашка

Правая чашка

Левая чашка

Правая чашка

Левая чашка

Правая чашка

 

 

Ка, с)

 

 

 

а

Она тяжелее настоящих

 

 

 

Она легче настоящих

 

 

 

 

Она тяжелее настоящих

 

 

 

Она легче настоящих

 

 

 

 

Она тяжелее настоящих

 

 

 

Она легче настоящих

 

 

 

 

Она тяжелее настоящих

 

 

 

Она легче настоящих

 

 

 

4.18 Присвоим монетам номера: 1, 2 6. Их можно объединить в различные пары, например: {1, 2}, {1, 3}

{2, 4} и т. д. до {5, 6}. Всего таких не повторяющихся пар будет 15. Будем записывать слева от тире номера монет на левой чашке весов, а справа — на правой.

Первое взвешивание: 1, 2, З

Второе взвешивание: 1, 2, 4

Если хотя бы при одном из этих взвешиваний равновесие весов нарушилось, то на чашке, вес которой больше, две из трех монет — фальшивые, а на другой — все монеты настоящие (только в этом случае весы среагируют — см. условие задачи). Для выявления фальшивых монет в этой ситуации достаточно еще двух взвешиваний (каких именно — установите самостоятельно).

Если же при первых двух взвешиваниях равновесие весов ни разу не нарушилось, то фальшивые монеты при обоих взвешиваниях находились на разных чашках. Таких пар (по результатам первых двух взвешиваний) может быть только пять: {1, 5}, {1, 6},

Осталось сравнить вес этих пар: 1, 5 — 2, 6 и, при необходимости, 1, 6 — 2, 5. Если при третьем или четвертом взвешивании весы не оказались в равновесии, то фальшивые монеты — те, которые находятся на перевесившей чашке весов; в противном случае фальшивые монеты имеют номера З и 4.

4.19 Можно. Разобьем монеты на четыре группы: А, В, С и D по две монеты в каждой и произведем три взвешивания:

3) (А + D} —

Их результаты можно проанализировать с помощью табл. 04.5, аналогичной использованной при решении задачи 4.17 (записав в нее знаки о», «<» или «=» )

Таблица 04.5

Особенности фальшивых монет

Где находятся

взвешивание

взвешивание

3-е взвешивание

Левая чашка

Правая чашка

Левая чашка

Правая чашка

Левая чашка

Правая чашка

{А,В}

{c,D}

{А,с}

{B,D}

 

 

Они тяжелее двух настоящих

В одной группе

 

 

 

В разных группах

 

 

 

Они легче двух настоящих

В одной группе

 

 

 

В разных группах

 

 

 

Две фальшивые и две настоящие монеты весят одинаково

В одной группе

 

 

 

В разных группах

 

 

 

Если встретится хоть одно равенство, то это означает, что две фальшивые и две настоящие монеты весят одинаково.

Если же не будет ни одного равенства, то ответ на вопрос из условия задачи можно получить так: отбросить два одинаковых из трех полученных знаков, и оставшийся знак покажет, что будет, если положить фальшивые монеты на левую чашку весов, а настоящие — на правую. Действительно, если фальшивые монеты находятся в одной группе, то они нечетное количество раз окажутся слева. Если тяжелая монета находится в группе А, а легкая в группах В, С или D, то один раз обе они окажутся слева, а дважды

318

получится знак «>». Аналогичный вывод можно сделать, и если фальшивые монеты «поменяются местами» в этих группах.

Наконец, если обе фальшивые монеты находятся в двух из трех групп В, С или D, то они дважды окажутся по разные стороны, дав оба знака «>» и «<» по одному разу, а один раз окажутся справа. При этом соответствующий знак будет отброшен как парный и останется противоположный ему.

4.20 Разделим монеты на три кучки по 7 монет в каждой, а одну монету отложим в сторону. Все возможные варианты нахождения фальшивых монет в кучках, а также соответствующее «состояние» дополнительной, 22-й монеты приведены в табл. 04.6.

Таблица 04.6

В кучке А

В кучке Б

В кучке С

22-я монета

Нет

Нет

1

Фальшивая

Нет

Нет

2

Настоящая

Нет

1

Нет

Фальшивая

Нет

1

1

Настоящая

Нет

2

Нет

Настоящая

1

Нет

нет

Фальшивая

1

Нет

1

Настоящая

1

1

Нет

Настоящая

2

Нет

Нет

Настоящая

Сделаем два взвешивания для двух любых пар кучек. Проанализировав все варианты в табл. 04.6, можно сделать вывод, что в результате этих двух взвешиваний будут найдены две кучки, равные по весу, и еще одна кучка, вес которой отличается от веса первых двух кучек, причем станет ясно также, в какую сторону. Видно, что в любом случае среди восьми монет (все из третьей кучки и 22-я монета) находятся или две, или ни одной фальшивой монеты.

Затем разделим восемь монет на две кучки по четыре монеты и сравним их по весу (это третье взвешивание). Если они равны по весу, то задача решена (можно добавить эти кучки к кучкам равного веса, выявленным при двух первых взвешиваниях). Если же при третьем взвешивании веса этих кучек различаются, то в одной из двух сравниваемых кучек содержатся две фальшивые монеты, причем мы знаем в какой, так как нам уже известно, легче или тяжелее фальшивая монета.

Далее мы разбиваем эту кучку на две отдельных по две монеты и, если они равны по весу, то добавляем эти «половинки» вместе с двумя парами настоящих монет к двум кучкам равного веса, выявленным ранее, — и задача решена.

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

Решение для 32 монет

Разобьем монеты на четыре кучки по 8 монет. Сравним вес первых двух кучек, а затем — двух других. При этом возможны три ситуации:

1)  оба раза — равенство весов;

2)  оба раза — разница;

З) один раз — равенство, второй раз — неравенство.

В первой и второй ситуациях задача решена (мы имеем две пары групп монет, из которых можно сформировать две равные по весу кучки). Рассмотрим третью ситуацию. В этом случае в одной из двух неравных по весу кучек (по восемь монет) содержатся обе фальшивые монеты. Разобьем обе такие группы на четверки монет. Тогда при третьем взвешивании мы на первую чашку весов положим одну четверку из первой восьмерки и одну четверку из другой, а на вторую — оставшиеся две четверки монет. Если будет достигнуто равновесие, то задача решена.

4.21 Выяснить требуемое можно, пользуясь следующим алгоритмом:

1)               пронумеровать мешки числами от 1 до 10;

2)               из каждого мешка извлечь столько монет, каков его номер (из мешка N2 1 — одну, из мешка .N2 2 --- две и т. д.);

З) определить на весах суммарный вес М всех извлеченных монет;

4)   проверить условие М = 550. Если оно истинно, то перейти к п. 7;

5)   определить разность R, равную М — 550;

6)   объявить, что в мешке с номером R монеты — фальшивые; перейти к п. 8;

7)   объявить, что мешка с фальшивыми монетами нет; 8) конец.

4.22

1-е взвешивание. Взять по одной монете из каждого мешка и определить их общий вес V1. В результате можно определить:

1)                вес настоящих монет т — он равен округленному до целого частному от деления на 11;

2)                вес фальшивых монет отличается от веса настоящих на величину, равную (V1 — 11 т); это значение также указывает, легче фальшивые монеты или тяжелее настоящих.

2-е взвешивание. Взять (как и в предыдущей задаче) из каждого мешка столько монет, каков его номер (общее количество взятых монет будет равно 66). Если их общий вес V2, то номер мешка с фальшивыми монетами равен (V2 —  — 11 т).

4.23 Главная идея метода состоит в том, что надо попарно взвешивать по одной монете из мешка № 1 и мешка N2 2, из мешка N2 1 и мешка N2 З, . . . , из мешка № 1 и мешка № 12 (общее количество взвешиваний при этом равно 11). Алгоритм решения будет следующим:

1            . Берем одну монету из мешка № 1 и одну монету из мешка № 2 и взвешиваем их если вес монет разный

мешок, из которого взята более легкая монета, содержит фальшивые монеты

В результате мы узнаем, какие монеты находятся в мешке № 1 настоящие или фальшивые .

2            . Продолжая взвешивания (как указано в идее метода) , мы при каждом взвешивании будем определять ” качество“ монет в том или ином мешке, сравнивая вес монеты из каждого мешка с весом монеты из мешка № 1 иначе (вес монет одинаковый) мешок № 2 откладываем, например вправо, и запоминаем, что справа находятся мешки с монетами, вес которых равен весу монет из первого мешка

2 . Продолжаем взвешивания (как указано в идее метода) если при очередном взвешивании вес монет будет одинаковый то откладываем очередной мешок вправо иначе (вес монет разный)

В этом случае мы узнаем, какие монеты находятся в мешке № 1 и в мешках, отложенных вправо, настоящие или фальшивые

З . При каждом последующем взвешивании мы будем определять ” качество“ монет в оставшихся мешках, сравнивая вес монеты из каждого мешка с весом монеты из мешка № 1 все все


 

321

Нетрудно убедиться, что предложенный метод позволит решить задачу и для следующих случаев:

1)                фальшивые монеты находятся только в последнем, п-м, мешке;

2)                фальшивые монеты находятся во всех мешках (если, конечно, такой вариант возможен 9).

4.24     Нужно разделить все монеты, кроме выбранной, на две группы по 50 штук и сравнить их. Если разность весов четна, то данная монета — настоящая; иначе — фальшивая.

4.25     При пяти монетах в каждой кучке задача решается аналогично задаче 4.21. Надо взять из первой кучки 1 монету, из второй — две из пятой — пять и определить их общий вес. Известно, каков был бы этот вес, если бы все монеты были настоящими. У нас же он будет больше на столько граммов, сколько фальшивых монет имеется среди отобранных. Но это число как раз равно номеру соответствующей кучки!

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

Для еще меньшего числа монет рассмотрим сразу случай двух монет в каждой кучке. На левую чашку весов тогда положим монету из первой кучки и две монеты из второй кучки, а на правую — одну монету из третьей кучки и две монеты из четвертой:

            {1Т1 + 2Т2}               {1тз + 2Т4},

где пи, ть тз, пч — вес одной монеты, соответственно, из первой, второй, третьей и четвертой кучки. Затем с помощью гирь определим разность R в граммах между общим весом монет на левой и правой чашках. По этой величине можно установить, из какой кучки взяты фальшивые монеты (см. табл. 04.7).

Таблица 04.7

R

Номе к альшивыми монетами

 

5

1

1

2

2

-1

з

-2

4

Вариант с тремя монетами в каждой кучке исследуйте самостоятельно.

П 1523

322

Да, сможет. Действуя по следующей схеме, эксперт сможет убедить суд, что монеты Ф1, Ф2, Ф? — фальшивые, а Н1, Н Н7 — настоящие.

Каждый раз правая чашка весов перевешивает, а это возможно лишь в том случае, если:

1)               монета Ф1 — фальшивая;

2)               фальшивых монет на левой чашке больше, чем на правой, т. е. при втором взвешивании подтверждается также фальшивость монет Ф2 и ФЗ, а при третьем взвешивании — монет Ф4, Ф5,

4.27       Главная идея решения — выбранную монету не нужно взвешивать!

Отложим выбранную монету в сторону, а остальные разложим произвольным образом по 100 штук на каждую чашку весов. Если бы все монеты на весах были настоящими, весы были бы в равновесии, а стрелка указывала бы на О. Однако среди монет есть либо 49, либо 50 фальшивых. Каждая фальшивая монета дает разность +1 или —1 грамм между чашками, поэтому если фальшивых монет 49, то разность между весами чашек (в граммах) будет нечетной, а если фальшивых монет 50, то разность между весами чашек будет четной. Очевидно, что отложенная монета — фальшивая в том и только в том случае, если разность между весами чашек нечетна.

4.28       Надо отложить какую-нибудь монету, а оставшиеся 24 монеты разделить на две группы по 12 монет и разложить их на разные чашки весов.

Если весы уравновесились, то отложенная монета — фальшивая, причем на каждой чашке весов лежит ровно по одной фальшивой монете. Значит, затем надо сравнить по 6 монет с любой из чашек: на чашке, которая имеет больший вес, и находятся 6 настоящих монет.

Если при первом взвешивании весы не уравновесились, то на той чашке, которая перевесила, или находится одна фальшивая монета, или нет ни одной такой монеты. Тогда все монеты с этой чашки также надо разделить на две группы и сравнить вес этих групп. Если при этом какая-то чашка перетянет, то на ней лежат 6 настоящих монет. Если же весы уравновесились, то на обеих чашках находятся по 6 настоящих монет.

323

4.29       Настоящие монеты тяжелее фальшивых, поэтому назовем их «тяжелыми», а фальшивые « легкими». Золотые монеты (и их веса) обозначим как (01, ф), серебряные — как (61, Ь), бронзовые — (сь c2).

Первое взвешивание: {а1 + b1}

1.                       Если достигнуто равенство, т. е. а1 + b1 = + с2, то все просто: вместе с «тяжелой» из монет (щ, 02) лежит «легкая» из (Й, с), а вместе с «легкой» «тяжелая». Тогда надо сравнить вторым взвешиванием а1 и 02, и все выяснится.

2.                       Сложнее, если первое взвешивание покажет неравенство, например а1 + b1 < а2 + 02. Тогда заметим, что а1 < а2, а значит, с парой (щ, 02) мы разобрались. Теперь проведем второе взвешивание: {а1 + ад

   Если правая чашка перевесит, то обе монеты (61, с2) «тяжелые » .

   Если перевесит левая, то обе они «легкие» .

   Если получится равенство: а1 + = b1 + сь то одна из монет (61, ф) «легкая», а другая — «тяжелая». Значит, «легкая» — это b1, а «тяжелая» — с2 (если было бы наоборот, то в первом взвешивании было бы достигнуто равенство).

З. Остается случай, когда первое взвешивание показывает, что + b1 > + c2. Его можно рассматривать аналогично предыдущему. Но не делайте этого! Проще переменить обозначения щ, b1, на ф, b2, c2 соответственно, и этот случай просто сведется к предыдущему.

Итоговая схема решения задачи: если ат + b1 то если аљ < аг то хорошие а-к, b1, все если а1 > а-2 то настоящие ат, b2, все все если аг + b1 < а2 + то если а1 + а2 < b1 + то настоящие ф, b1, все

 

324

если а1 + а-2 = b1 + сг то настоящие аг, b2' все если а1 + а2 > b1 + са то настоящие а-2, b2' все все если а1 + b1 > а; + с2 то если ад. + аг > b1 + сг то настоящие все если аш + а2 со настоящие все если а1 + а; < b1 + с2 то настоящие ф, b1, с2 все все

4.30 Положим на чашки весов по одному кубику (первое взвешивание). При этом могут иметь место два различных случая.

1.При первом взвешивании одна из чашек весов перевесила другую. В этом случае из двух взвешиваемых кубиков один обязательно является алюминиевым, а второй — дюралевым. Далее мы кладем эти два кубика на одну чашку весов, а на вторую — последовательно помещаем по паре оставшихся кубиков (разбиение 18 оставшихся кубиков на 9 пар проводится произвольно). Если при этом какая-нибудь пара кубиков перевешивает нашу исходную пару, то оба кубика во второй паре — дюралевые; если перевешивает первая пара, то оба кубика второй пары — алюминиевые. Если же обе пары имеют одинаковый вес, то вторая пара также содержит один алюминиевый и один дюралевый кубик. Таким образом, в случае 1 мы можем определить количество дюралевых кубиков при помощи 10 взвешиваний (первое взвешивание плюс 9 последующих взвешиваний пар кубиков).

2.При первом взвешивании чашки весов остались в равновесии. Тогда кубики первой пары — или оба алюминиевые, или оба дюралевые. Далее мы кладем эти два кубика на одну чашку весов,

325

а на вторую — последовательно помещаем по одной паре из 18 оставшихся. Пусть первые К из этих пар оказались одного веса с первоначальной, а (К + 1)-я пара — другого веса. (Если К = 9, то все кубики имеют одинаковый вес и, следовательно, дюралевых кубиков нет вовсе; случай же К = О ничем не отличается от общего случая.) Предположим для определенности, что (К + 1)-я пара оказалась более тяжелой, чем первоначальная (хотя рассуждение мало изменилось бы, если бы (К + 1)-я пара оказалась более легкой), В этом случае первые два кубика, а следовательно, и кубики тех К пар, которые оказались с ними одинакового веса, — алюминиевые. Тем самым мы, проведя пока (1 + (К + 1)) = (К + 2) взвешиваний, выделили (К + 1) пар алюминиевых кубиков. Теперь положим на чашки весов по одному кубику из последней взвешенной пары (это (К + З)-е взвешивание). Если оба они окажутся одинакового веса, то они оба должны быть дюралевыми; в противном случае один из них алюминиевый, а второй — дюралевый. В обоих случаях мы можем после (К + З) взвешиваний выявить пару из двух кубиков, где один из них — алюминиевый, а второй — дюралевый. С помощью этой пары мы (8 — К) взвешиваниями определим количество дюралевых кубиков среди оставшихся (20 - + 2)) (16 —2k) кубиков так же, как мы поступали в случае 1. Общее число взвешиваний в случае 2 будет равно (К + З + (8 — К)) = 11.

4.31 Разделим наши монеты на три группы по четыре монеты в каждой. Монеты первой группы обозначим как пи, т2, тз, тс, второй группы как Тб, Тб, т7, пч; а третьей как т9, т10, Т11,

При первом взвешивании поместим на каждую чашку весов по одной группе из четырех монет (например, первую и вторую).

При этом возможны два варианта:

1) чашки весов уравновесились; 2) одна из чашек перевесила другую.

Рассмотрим оба этих варианта.

1.Если при первом взвешивании чашки весов уравновесились, то фальшивая монета находится в оставшейся третьей группе, а все 8 монет на весах — настоящие. Тогда при втором взвешивании положим на одну чашку три монеты из третьей группы (например, монеты т9, 77210, ты), а на другую три монеты из восьми заведомо настоящих (например, монеты пи, пи, тз). При этом также возможны два случая:

1.1)        чашки весов уравновесились — тогда монета — фальшивая. Сравнивая ее (третьим взвешиванием) с настоящей (пи), мы находим, легче она или тяжелее, чем настоящая;

1.2)        одна из чашек перевесила — в этом случае фальшивой является одна из монет т9, или ты. При этом если перевесила чашка с настоящими монетами, то фальшивая монета — легче настоящих; далее одним взвешиванием мы без труда выделяем более легкую из трех монет: пи, и (см. решение задачи 4.8). Если же перевесила чашка с монетами 7729, пио и ты, то фальшивая монета тяжелее настоящих; в этом случае ее также легко определить одним взвешиванием.

2.Если при первом взвешивании одна из чашек весов перевесила, то возможны два случая:

2.1)        перевесила чашка весов с монетами т1, п», тз, пи;

2.2)        перевесила чашка весов с монетами Тб, Тб, т7, т8.

В обоих этих случаях все монеты в оставшейся группе — настоящие. А для сравниваемых групп если фальшивая монета одна из монет пи, ть тз, пи, то она тяжелее настоящих; если же это одна из монет Тб, Тб, т7, тв, то она легче настоящих.

Рассмотрим эти два случая в отдельности:

2.1) перетянула чашка весов с монетами пи, п», тз, пи. Тогда при втором взвешивании поместим на одну чашку монеты пи, и Тб, а на другую — монеты тэ, пи и Тб. Тогда возможны такие случаи:

   чашки уравновесились: фальшивая — одна из монет т7 или (и при этом она легче настоящих). Тогда при третьем взвешивании мы поместим на одну чашку весов монету т7, а на вторую — монету nt8,• та из этих монет, которая окажется легче другой, и будет фальшивой;  перевесила чашка с монетами пи, и т5.• монеты тз, пи настоящие. В самом деле, если бы одна из монет тз, была тяжелее остальных или монета была легче остальных, то при втором взвешивании чашка, на которой лежат монеты тз, пи и Тб, должна была бы перевесить, чего на самом деле не случилось. Итак, фальшивой является одна из монет пи, (в этом случае фальшивая монета тяжелее настоящих) или Тб (в этом случае фальшивая монета легче настоящих). Тогда при третьем взвешивании положим на одну чашку монету пи, а на другую — монету nt2. Если чашки уравновесились, то фальшивая монета — а если одна из чашек перевесила, то на ней и лежит фальшивая монета;

   перевесила чашка с монетами тэ, пи и Тб. Рассуждая аналогично предыдущему случаю, мы сделаем вывод, что монеты пи, и Тб — настоящие и что либо одна из монет тз, пи фальшивая и тяжелее настоящих, либо монета фальшивая и легче настоящих. Тогда при третьем взвешивании мы

327

положим на одну чагику монету тз, а на другую — монету пи. Если весы уравновесились, то фальшивая монета — Тб. Если же одна из чашек перевесила, то на ней и находится фальшивая монета;

2.2) перевесила чашка весов с монетами 7715, Тб, т7, пи. В этом случае мы поступаем аналогично сказанному выше с той разницей, что роль монеты пи будет играть монета (и наоборот); монеты монета (и наоборот); монеты —монета т7 (и наоборот); монеты пи — монета (и наоборот).

Безусловно, приведенная выше схема определения фальшивой монеты — достаточно громоздкая (но что делать — задача-то непростая О). Возможен и более простой по объему вариант решения этой задачи, основанный на следующих не очень сложных рассуждениях.

Введем следующую систему кодирования монет при взвешиваниях: О означает, что монета не участвует во взвешивании; 1 участвует (при этом если она уже участвовала во взвешиваниях, то монета остается на той же чашке); 2 — монета участвует во взвешивании (при этом она обязательно участвовала в одном из предыдущих взвешиваний, но в текущем взвешивании лежит на противоположной чашке весов). Из этого условия следует, что ни в каком варианте цифра 2 не может предшествовать первой цифре 1. Запишем теперь все возможные варианты сочетаний кодов, выписывая (для удобства) коды трех взвешиваний в столбик (табл. 04.8).

Таблица 04.8

Чтобы можно было провести измерения, необходимо, чтобы в каждой строке было четное число ненулевых элементов (иначе количество монет на чашках будет различным). Для этого вычеркнем из таблицы, например, столбцы О и 7. Сопоставим оставшиеся 12 вариантов кодов номерам имеющихся монет, присвоив им номера 1, 2 12 (табл. 04.9). Кстати, поскольку столбец О не меняет только что упомянутую четность, его можно не вычеркивать, т. е. задача может быть решена и для 13 монет.

Далее мы будем оперировать «кодами» каждой монеты, представляя их тремя цифрами согласно табл. 04.9. Например, код монеты № 5 имеет вид 101.

328

Таблица 04.9

 

Номер варианта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

з

4

5

6

7

8

9

10

11

12

 

Номер монеты

В первом взвешивании возьмем 8 монет с единицей в первом разряде кода и положим их на весы по 4 монеты на каждой чашке.

При втором взвешивании:

1)                       уберем с чашек монеты, у которых нуль записан во втором разряде кода, — их три;

2)                       переложим монеты, у которых двойка записана во втором разряде кода, на противоположную чашку (таких монет тоже три);

З) заполним оставшиеся места монетами, у которых единица во втором разряде кода возникает впервые.

Пользуясь теми же соображениями (т. е. с учетом системы кодирования монет), проведем третье взвешивание:

1)                       уберем монеты, у которых нуль записан в третьем разряде кода;

2)                       переложим монеты, у которых во втором и третьем разрядах кода имеется сочетание кодов 12, на противоположную чашку;

З) заполним оставшиеся места монетами, которые не участвовали во втором взвешивании, расположив их на весах с учетом принятой системы кодирования.

Результаты взвешиваний мы будем записывать следующим образом:

   если чашки весов уравновешены, то записываем в разряд, соответствующий этому измерению, цифру О;

   если одна чашка перевесила впервые или в ту же сторону, что и в предыдущем взвешивании (когда весы не были уравновешены), то записываем 1;

   если весы перевесили в сторону, противоположную предыдущему неуравновешенному состоянию, то записываем 2.

В результате мы получим код фальшивой монеты (действительно, если фальшивая монета не участвовала во взвешивании, то весы уравновешены; если она была на одной и той же чашке, то мы получим единицы, а если на разных чашках — двойки).

 

329

Пример. Пусть фальшивая монета имеет номер 9 (ее код в табл. 04.9 равен 120).

1.                В первом взвешивании участвуют 8 монет с единицей в первом разряде (это монеты с номерами З, 5, 6, 8, 9, 10, 11, 12). Положим первые 4 монеты на левую чашку, остальные — на правую (рис. 04.1). Так как среди взвешиваемых монет есть фальшивая, то весы в равновесии не будут. Зафиксируем этот факт — записываем 1 (и запоминаем при этом, какая чашка весов перевесила).

                                     9 + 10 + 11 + 12

Рис. 04.1

2.                Для второго взвешивания:

1)                       убираем с чашек монеты, у которых записан нуль во втором разряде (это монеты с номерами З, 5 и 8);

2)                       перекладываем на противоположную чашку монеты с номерами 7 и 11 (см. описание действий выше);

З) заполняем оставшиеся места монетами, которые не участвовали во втором взвешивании (их номера — 1, 5 и 8); при этом, согласно правилам, монета номер 8 должна быть на правой чашке весов (рис. 04.2).

                       4 + 8 + 10 + 11

Рис. 04.2

Ясно, что при втором взвешивании тоже равновесия не будет, но при этом перевесит другая чашка (по сравнению с первым взвешиванием). Следовательно, результат второго взвешивания — 2. З. Проводим третье взвешивание:

1)                       убираем с чашек монеты, которые не должны участвовать в нем (у которых нуль записан в третьем разряде) — это монеты с номерами 2, 6 и 9);

2)                       перекладываем монеты, у которых записана двойка во втором разряде (монеты с номерами 9, 11 и 12), на противоположную чашку;

З) заполняем оставшиеся места монетами, которые не участвовали в первом взвешивании (их номера — 2, 4 и 7) — рис. 04. З.

         6 + 9 + 11 + 12        7 + 10

Рис. 04.3

Результат третьего взвешивания — О, а для всех трех взвешиваний — 120, который и соответствует коду являющейся фальши-

 

330

вой монеты номер 9. Легче же она или тяжелее настоящих монет (ведь нам надо определить и это!), можно установить, вспомнив результат первого (или второго) взвешивания, в котором участвовала эта монета. Эффектно (и эффективно), — не правда ли? ©

(Работу приведенного алгоритма при других номерах фальшивой монеты проверьте самостоятельно.)

Ответы к главе 5

5.1 Основные этапы решения:

1)         перемещение вагона N2 1 к точке С;

2)         перемещение вагона 2 к вагону .N2 1; З) перемещение вагона № З к вагону N2 2;

4)   перемещение трех сцепленных вагонов на основной участок пути между стрелками СТ и С2;

5)   перемещение тепловоза на основной участок пути правее стрелки С2;

6)   перемещение тепловоза к сцепленным вагонам.

Алгоритм решения заДачи:

1)  перевести стрелку С1 на северный запасной путь;

2)  двигаться вперед до сцепки с вагоном N2 1;

З) двигаться вперед до стрелки (12;

4)       перевести стрелку С2 на северный запасной путь;

5)       двигаться вперед до точки С;

6)       отцепить прицепленный к тепловозу вагон;

7)       двигаться назад до стрелки С2;

8)       двигаться назад до стрелки С 1;

9)       двигаться назад до точки А;

10)   перевести стрелку С1 на основной путь;

11)   двигаться вперед до сцепки с вагоном № 2;

12)   двигаться вперед до стрелки С2;

13)   перевести стрелку С2 на основной путь;

14)   двигаться вперед до сцепки с вагоном № 1;

15)   отцепить прицепленный к тепловозу вагон;

16)   двигаться назад до стрелки С2;

17)   двигаться назад до стрелки С 1;

18)   двигаться назад до точки А;

19)   перевести стрелку С1 на южный запасной путь;

20)   двигаться вперед до сцепки с вагоном № З;

21)   двигаться вперед до стрелки С2;

22)   перевести стрелку С2 на южный запасной путь;

23)   двигаться вперед до сцепки с вагоном № 2 (вагоны собраны);

24)   двигаться назад до стрелки С2;


                             5                                                                                           331

25)   перевести стрелку С2 на основной путь;

26)   двигаться назад до стрелки С 1;

27)   отцепить прицепленный к тепловозу вагон;

28)   перевести стрелку С1 на основной путь;

29)   двигаться назад до точки А;

30)   двигаться вперед до стрелки С 1;

31)   перевести стрелку С 1 на южный запасной путь;

32)   двигаться вперед до стрелки С2;

33)   перевести стрелку С2 на южный запасной путь;

34)   двигаться вперед до точки С;

35)   двигаться назад до сцепки с вагоном № 1.

Самостоятельно найдите решение этой задачи за 15 действий.

5.2 Общий ход решения следующий.

Тепловоз движется вправо, задним ходом заходит на запасной путь, прицепляет белый вагон, возвращается на основной участок, движется по нему назад, затем заходит на запасной путь к черному вагону и прицепляет его (рис. 05.1а).

Далее черный вагон перемещается на мост, тепловоз с белым вагоном подходит к мосту с другой стороны (справа), цепляет черный вагон (рис. 05.16), и весь состав возвращается на основной путь (рис. 05.1в).

Тепловоз, двигаясь задним ходом, смещается назад (за запасной путь), отцепляет там черный вагон, а белый вагон заводит на мост и отцепляет его. Затем тепловоз подходит к мосту с другой стороны (слева), прицепляет белый вагон, отвозит его на положенное ему место (рис. 05.10 и отцепляет.

                                   а)                                                          б)

                                   в)                                                          г)

Рис. 05 1

После этого тепловоз возвращается к черному вагону, прицепляет его и отвозит на правую часть запасного пути, а сам возвращается на первоначальное место.

Данная задача также имеет «симметричное» решение, когда описанные действия с белым вагоном заменяются на действия с черным и наоборот.

Дополнительное задание

Самостоятельно ответьте на вопрос: можно ли решить эту задачу в случаях, когда железнодорожные пути имеют вид, показанный на рис. 05.2—05.4?

                           Рис. 05.2                                                                          Рис. 05.3

Рис. 05.4

5.3 Прежде всего, нужно временно переместить вагон .N2 З вправо, за правую стрелку. После этого задача сводится к условиям задачи 5.2 (если вагон N2 2 рассматривать как черный, а вагон как белый); состояние после одного из этапов решения этой задачи было показано на рис, 05.16. Нам нужно и в рассматриваемой задаче аналогично получить такое же состояние (рис. 05.5).

Рис. 05.5

333

5

Осталось прицепить вагон № З (вы не забыли о нем? 9). Это можно сделать так:

1) отбуксировать вагоны 1 и 2 за левую стрелку и оставить их там;

2) прицепить вагон № З, завести его (толкая) на мост слева и отцепить;

З) вернуться за вагонами N2N2 1 и 2, вместе с ними подойти к вагону З с правой стороны моста и прицепить этот вагон. После этого состав готов к движению.

Дополнительное задание

Попробуйте решить задачу при других вариантах размещения вагонов (см. рис. 05.6—05.16).

                                Рис. 05.6                                                                          Рис. 05.7

                                Рис. 05.8                                                                          Рис. 05.9

                      Рис. 05.10                                                   Рис. 05.11

                      Рис. 05.12                                                   Рис. 05.13

334

Основные этапы решения следующие:

1) тепловоз прицепляет вагон и загоняет его в тупик;

2) тепловоз прицепляет цистерну и ставит ее на то место, на котором ранее стоял вагон;

З) пройдя мост, тепловоз подходит к цистерне с другой стороны (на рис. 5.4 — «снизу»);

4)   тепловоз вновь прицепляет цистерну, а затем (к ней) и вагон, ставит вагон на его прежнее место, а цистерну загоняет в тупик;

5)   отцепив цистерну и пройдя через мост (на рис. 5.4 — «против часовой стрелки»), тепловоз прицепляет вагон, а затем с другой стороны — цистерну;

6)   оказавшись между цистерной и товарным вагоном, тепловоз, маневрируя, ставит их на заданные места и возвращается в исходное положение.

5.5 Оптимальное решение, согласно которому семья перейдет мост за минимально возможное время (за 17 минут), представлено в табл. 05.1.

Таблица 05.1

1 . Переходят папа и мама

2 минуты

2. Папа с фонариком возвращается

1 минута

З. Переходят бабушка и малыш

10 минут

4. Мама с фонариком возвращается

2 минуты

5. Переходят папа и мама

2 минуты

Итого

17 минут

Для описанного в задаче перехода путешественнику достаточно нанять всего двух носильщиков. Если запас пищи и еды на К дней для одного человека обозначить как Ук, где К = О, 1, 2, З, 4, то действия участников перехода (путешественника П и носильщиков Н 1 и Н2) должны быть следующими (табл. 05.2).

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


①ミ ー9

 

 

00 000自①H

BHYKゴHO

・ゞ0If①ITI

 ① ・

 

 

一、102uB8

BO月Bト000 a

BHÏ ゴHO

、101.fêITIIqq

 

oゝ

q00 000①H

BHYKゴHO

                              ・く         BO

・←のBillBd 90a一、1

BO ミ ト000

t'A

BO畠ト000 ①H

BHくKゴHO

あ、40If①111一

①ミ ー

 

【、102uB9

o弓 ト000 ①H

B KゴHO

・ H

BO←①BillBd008 30 ミ 000

・ ミHHの ト0のIllのトRI-I ゞ く占

o弓

8、102n29 ト000 の 国 く KゴHO

寺ゝ0月①m38

・CHト0 ゞ ミ OLI

8B BO

・ト①Bョed 90一ゝ

BOWHITIHB'LOO0

・7,H

K ミill Ifミ00H 一、1ミ

-,I.,oarne,I.,RI-I

一ゝ くト0

、1OBI.IB8

0r9←000 ①H

BHYKゴHO ・ゞ0Ifの日

I.H・ト0 ゞ ミプ 01.1

8ゝ

02n29 0 ト00 0自 H BHY Rゴ 0

・マゝ0月①Ill一 8 ・I ト0 一ゝ ミプKlfOI_I

 ①く ・I

8、11くの02nB9

・ ト000 ①H

BHYKゴHO

・、10B.L

・HRロ0 0 OX ・0ミ ミ ① 8

、1OBI-IBC

o月Bト00OdôH

HくKゴHO

・マAOBト

・MHRII0OHくOX ミ ミ の日コ8

8ゝ02n29

0r2ト000 のHK

くKゴHO

・、10

-YHKII0 OHくOX とミ9ミ ① 室8

 

IH

 



① ・9

oゝ

OOTBト000①HK BHÌÍKゴH0寘

、当ト0

HWAHHôhKIfOLI

」40IfôIIIIq8

oゝ OOIfB←00

0①H

HくKゴHO

・CFI←0 ミ IqHH①hK 011 こ、401.fôTIIIq8

oゝ 00 B←00

0①HK BHÌÍKゴH0鰄

・ 01.fôffIIq8

o、1 00 ト00 0①H Hく ゴHO

・-c.H・ト0HWAHHôh ・KIfOüニ、10If①Ill 8

0K1 00 Bト00 Hく ゴHO

・ 0IfôITIIq8

・一ゝ くト0 よ0

oミ1118ミト①d←08 ニゝ ①Ireくト0

、、0 0ミコ一 ミト①d←08 あゝ00rト00 OLIOH HくゴHO                     

1、当ミ11KhadŒ08BH

B,LYHKII0OH

ーh①HO CH

 ①く 、

oゝOBI.IB8

BOIfeト000①H

BHÌÍKゴHO

・IA0If①Ill一8

00r2ト00

・一ゝ IfB ト0

0 0ミ111

,8ミ ①d 08

BOIfGト000①H

BHYRゴ 0

ゝ0

LIKhed'L08BH

I.fôT111q8

 

①ミミー

OBI-IBC

0r2←000①HK BHYKゴHO

・ 40IfôITIIq8

8、1OBI-188

BOIfBト000①H

              国 くKゴ 0     

・                          0OHh①H

ー0 ミ

 

①く,2

 ト000①H

HくKゴHO

・40If①111一 8

 

 

談① ・I

8、1 ①OBI-IB8

BOIfB←00OdôH

BHYKゴHO

e,LYHKII0OH OX ー0ミ8ミIf①111 8

 

 

 

1、

 

 


の・90eごコ


337

5

Дополнительное задание

Самостоятельно ответьте на вопрос: если носильщик только один, то можно ли решить аналогичную задачу для следующих вариантов маршрута:

1)  маршрут шестидневный, замкнутый (т. е. его начальный и конечный пункты совпадают);

2)  маршрут шестидневный, незамкнутый; носильщик находится в его конечном пункте;

З) маршрут семидневный, замкнутый;

4)   маршрут семидневный, незамкнутый; носильщик находится в его конечном пункте;

5)   маршрут восьмидневный, незамкнутый; носильщик находится в его конечном пункте.

5.7 Решение представлено в табл. 05.4.

Таблица 05.4

Этап

Этаж, на котором находимся

Нажимаем на кнопку

Этаж, на котором оказываемся

 

 

 

 

 

 

+13

18

 

18

 

10

 

10

 

 

 

 

+13

15

 

15

 

 

 

 

+13

20

 

20

 

12

 

 

 

 

10

 

+13

17

11

 

 

 

12

 

 

 

13

 

+13

14

14

 

 

 

15

 

+13

19

16

19

 

11

17

11

 

 

18

 

+13

16

19

16

 

 

Примечание. Кнопки с условным обозначением «—8» и «+13» это и есть кнопки, при нажатии на которые лифт опускается на 8 этажей и поднимается на 13 этажей соответственно.

12—1523

 

 

338

Ответы к главе 6

6.1

1.Зашифрованное слово — «криптография» (наука о принципах, средствах и методах преобразования информации для ее защиты от несанкционированного доступа и искажения).

2.Зашифровано следующее четверостишие Омара Хайяма: Чтоб муДро жизнь прожить, знать надобно немало,

Два важных принципа запомни для начала:

Ты лучше голодай, чем что попало есть,

И лучше будь один, чем вместе с кем попало.

Ключ для расшифровки: сдвиг на семь символов (на седьмой по счету символ) влево по алфавиту.

6.2         Послание, найденное Буратино:

ЖИЛ-БЫЛ У БАБУШКИ

СЕРЕНЬКИЙ КОЗЛИК

6.3         Ответ — первая фраза романа И. С. Тургенева «Дворянское гнездо» :

ВЕСЕННИЙ, СВЕТЛЫЙ ДЕНЬ клонился К ВЕЧЕРУ; НЕБОЛЬШИЕ РОЗОВЫЕ ТУЧКИ СТОЯЛИ ВЫСОКО

В ЯСНОМ НЕБЕ И, КАЗАЛОСЬ, НЕ ПЛЫЛИ МИМО, А УХОДИЛИ В САМУЮ ГЛУБЬ ЛАЗУРИ

6.4         Обратим внимание на слово «ЛТоллии» в шифрограмме. Оно очень похоже на слово «России». Предположим, что «ш Моллии» — это «в России». Тогда можно заметить, что все гласные в «тарабарском» тексте оставлены без изменения (т. е. они не шифруются).

Посмотрим теперь на согласные. Мы уже выяснили, что в шифрограмме «м» это «р», «ш»  «с». Выпишем все согласные буквы (табл. Об. 1), включая уже известные нам их сочетания.

Таблица Об. 1

б

в

г д

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ш

щ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Примечание. В верхней строке записаны буквы в шифрограмме, а в нижней — расшифрованные буквы.

 

339

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

Таблица 06.2

б

в

г д

 

 

 

л

м

кт

р

с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Эта таблица — ключ шифра — может быть оформлена и короче (табл. 06.3). В этом варианте ключа шифра каждая согласная меняется на букву, расположенную в таблице непосредственно над ней или под ней.

Таблица 06.3

б

в

 

д

ж

з

к

л

м

н

щ

ш

ч

ц

х

 

 

с

Р

п

Для решения задачи надо обратить внимание на следующее. Во-первых, письмо было получено в искаженном виде из-за неправильной настройки почтовых программ, поэтому естественно предположить, что при возникшей замене букв на значки одинаковые значки соответствуют одинаковым буквам, а разные значки — разным буквам, Во-вторых, легко догадаться, что в начале письма стоит обращение к адресату («Клара » ), и убедиться в правильности этой догадки, заменив в последнем слове письма значки на ставшие известными соответствующие им буквы, — получится подпись отправителя («Карл»); заодно можно заменить на «отгаданные» буквы эти значки в остальном тексте (рис. Об. 1).

Клара: а» е о • е алано ере+о.<а ФО 8

ФЛ лал » «ере о             е «ор Иле.»

Фра>а                                  Карле

Рис. 06.1

Теперь обратим внимание на первые два слова второй строки. Нетрудно догадаться, что это словосочетание «так КОК » (рис. 06.2).

КлараГ о • е алано ере+о.та ФО 3 так как » те ре о •*.в3е ее тор яле.а* 9 тера>а ее » тер•е• Карле

Рис. 06.2

Легко определить в этом тексте и знаки препинания (восстановить точку и восклицательный знак — рис. 06.3).

Клара! а» е о                  

ере+о•т• ФО .3е•Л

так как » те ре о                         

ее тор 1ле•в.

Карл.

Рис. 06.3

Далее, исходя из соображения «осмысленности» текста, можно подобрать и буквы, соответствующие остальным значкам. В результате получится расшифрованный текст:

Клара! Твое послание прочесть не смог, так как второе письмо потерялось. Отправь его повторно. Карл.

Обратим внимание, что поскольку в таблицах компьютерных кодировок символов одна и та же буква в прописном и в строчном виде имеет разные коды, то и в полученном послании значки, соответствующие прописным и строчным буквам, различаются.

Достаточно рассмотреть лишь буквы с номерами 1, 2, 11, 12, 21 и 22. это буквы «А», «Б», «К», «Л», «У» и «Ф». про-

анализировав все возможные варианты на предмет их осмысленности, можно получить ответ: «ФУФАЙКА» .

6.7 Маршрут движения поезда, которым ехал автор: «БАКУ — УФА » ,

6.8 Вот один из целого ряда возможных способов дешифровки заданной криптограммы.

Прежде всего можно догадаться, что в криптограмме — стихи, так как концы 1-й и 4-й, а также 2-й и 3-й строк совпадают (рифма).

Обратим внимание на второе слово первой строки

Двухбуквенными словами в русском языке являются слова «аз» ,

«ар», «ас», «бы», «во», «до», «из», «же», «ко», «ли», «на», «не»,

«но», «он», «со», «та», «те», «то» и несколько других. Сравнив


каждое из них с первым словом первой строки, которое оканчивается теми же буквами (с кодами 2 и З), а также учитывая четвертое слово первой строки и последнее слово текста, можно прийти к выводу, что числом 2 закодирована буква «н», а числом З буква «е». Запишем эти буквы в текст (рис. 06.4).

1, н, е - н, е - 4, 5, 6, 7, 4, 8 - н, е, 7 - 9, 10, н, 8

11,4, 12, 13, 14- 1, 15, 16, 17-6-4, 9, н- 13, 9, 17, 14, 18, н, 19, 20

21, 9, 13- 18, 16, 4, 9, 11 -22, 6, 23, 24-9, 13, н, 9, 25, 11, 14, 18, н, 19, 20

15, 16, 25, 13, 16, е, 7, 4, 8 - 26, 22, 6, 25 - 1, е, н, 8

Рис. 06.4

Теперь легко понять, что 1 — это буква «м» (рис. 06.5), а 8 — буква «я» (рис. 06.6).

м, н, е — н, е — 4, 5, 6, 7, 4, 8 — н, е, 7 — 9, 10, н, 8

11,4, 12, 13, 14-м, 15, 16, 17-6-4, 9, н- 13, 9, 17, 14, 18, н, 19, 20

21, 9, 13- 18, 16, 4, 9, 11 -22, 6, 23, 24-9, 13, н, 9, 25, 11, 14, 18, н, 19, 20

15, 16, 25, 13, 16, е, 7, 4, 8 - 26, 22, 6, 25 - м, е, н, 8

Рис. 06.5

м, н, е — н, е — 4, 5, 6, 7, 4, я — н, е, 7 — 9, 10, н, я

11, 4, 12, 13, 14-м, 15, 16, 17-6-4, 9, н- 13, 9, 17, 14, 18, н, 19, 20

21, 9, 13- 18, 16, 4, 9, 11-22, 6, 23, 24-9, 13, н, 9, 25, 11, 14, 18, н, 19, 20

15, 16, 25, 13, 16, е, 7, 4, я - 26, 22, 6, 25 - м, е, н, я

Рис. 06.6

Далее очевидно, что числом 7 закодирована буква «т» (рис. Об. 7).

м, н, е — н, е — 4, 5, 6, т, 4, я — н, е, т — 9, 10, н, я

11, 4, 12, 13, 14-м, 15, 16, 17-6-4, 9, н- 13, 9, 17, 14, 18, н, 19, 20

21, 9, 13- 18, 16, 4, 9, 11 -22, 6, 23, 24-9, 13, н, 9, 25, 11, 14, 18, н, 19, 20

15, 16, 25, 13, 16, е, т, 4, я - 26, 22, 6, 25 - м, е, н, я

Рис. 06.7

Внимательно прочитав полученный текст, обратим внимание на первое слово последней строки: «15, 16, 25, 13, 16, е, т, 4, я». Можно предположить, что это — глагольная форма, заканчивающаяся на «тся». Аналогичным является и третье слово первой строки. Подставив в него только что упомянутое окончание «тся», мы получим «с, 5, 6, т, с, я», что похоже на слово «снится». Подстановка же вместо кода 4 буквы «с» в четвертое слово второй строки дает «с, 9, н», что также явно связано со словом «сон». Итак, принимаем, что 4 — это буква «с» (рис. 06.8).

13—1523

I 342

м, н, е — н, е — с, 5, 6, т, с, я — н, е, т — 9, 10, н, я

11, с, 12, 13, 14-м, 15, 16, 17-6-с, 9, н- 13, 9, 17, 14, 18, н, 19, 20

21, 9, 13- 18, 16, с, 9, 11 - 22, 6, 23, 24-9, 13, н, 9, 25, 11, 14, 18, н, 19, 20

15, 16, 25, 13, 16, е, т, с, я- 26, 22, 6, 25 - м, е, н, я

Рис. 06.8

Теперь видно, что второе слово первой строки «спится» (так как слово «снится» не подходит по смыслу). Тогда заменяем 5 на «п», а 6 — на «и» (рис. 06.9).

м, н, е — н, е — с, п, и, т, с, я — н, е, т — 9, 10, н, я

11, с, 12, 13, 14-м, 15, 16, 17-и-с, 9, н- 13, 9, 17, 14, 18, н, 19, 20

21, 9, 13-18, 16, с, 9, 11 -22, и, 23, 24-9, 13, н, 9, 25, 11, 14, 18, н, 19, 20

15, 16, 25, 13, 16, е, т, с, я — 26, 22, и, 25 — м, е, н, я

Рис. 06.9

Рассматриваем теперь четвертое слово второй строки: «с, 9, н» . Хотя чуть выше мы уже предполагали, что это «сон» , но проверим и другие варианты. Это не может быть слово «сын» , так как на букву «ы» не может начинаться последнее слово первой строки. Если же 9 — это буква «а», то последнее слово первой строки будет таким: «а, 10, н, я» , но таких слов в русском языке нет. Значит, числом 9 действительно закодирована буква «о» (рис. 06.10).

м, н, е — н, е — с, п, и, т, с, я — н, е, т — о, 10, н, я

11, с, 12, 13, 14-м, 15, 16, 17-и-с,о, н- 13, о, 17, 14, 18, н, 19, 20

21, о, 13- 18, 16, с, о, 11 -22, 6, 23, 24-0, 13, н, о, 25, 11, 14, 18, н, 19, 20

15, 16, 25, 13, 16, е, т, с, я — 26, 22, и, 25 — м, е, н, я

Рис. 06.10

Проанализировав последнее слово третьей строки, нетрудно понять, что начинается оно на «одно» (слово «обновление» здесь явно не подходит). Заменяем в тексте число 13 на букву «д», а число 10 — на букву «г» (это видно по последнему слову первой строки, рис. 06.11).

11, с, 12, д, 14 - м, 15, 16, 17 - и - с, о, н - д, о, 17, 14, 18, н, 19, 20

21, о, д— 18, 16, с, о, 11 - 22, и, 23, 24-0, д, н, о, 25, 11, 14, 18, н, 19, 20

15, 16, 25, д, 16, е, т, с, я — 26, 22, и, 25 — м, е, н, я

Рис. 06.11

Видим, что 21 — это буква «х» . Ясно также, что 16 — гласная буква. Неиспользованными пока гласными у нас являются «а», «ы», «у» и «ю» . Наиболее вероятными из них являются «а» и «у» .

Проанализировав другие слова с буквой, код которой равен 16, можно прийти к выводу о том, что это код буквы «а» (рис. Об. 12).

11, с, 12, д, 14 - м, 15, а, 17 - и - с, о, н - д, о, 17, 14, 18, н, 19, 20 х, о, д- 18, а, с, о, 11 -22, и, 23, 24-0, д, н, о, 25, 11, 14, 18, н, 19, 20 15, а, 25, д, а, е, т, с, я — 26, 22, и, 25 — м, е, н, я

Рис. 06.12

Очевидно, что первое слово последней строки — «раздается» (рис. 06.13).

11, с, 12, д, 14 - м, р, а, 17 — и — с, о, н — д, о, 17, 14, 18, н, 19, 20 х, о, д— 18, а, с, о, 11 -22, и, 23, 24-0, д, н, о, з, 11, 14, 18, н, 19, 20 с, я — 26, 22, и, з — м, е, н, я

Рис. 06.13

Тогда, имея в начале третьей строки слова «х, о, д — 18, а, с, о, 11 » , можно предположить, что второе слово здесь — «часов» . В пользу этого говорит и факт, что последнее слово этой же строки — скорее всего «однозвучный» (слово «однозначный» по смыслу не подходит). Значит, 11 — это «в», а 18 «ч» (рис. 06.14).

в, с, 12, д, 14 — м, р, а, 17 — и — с, о, н — д, о, 17, 14, ч, н, 19, 20 х, о, д — ч, а, с, о, в — 22, и, 23, 24 — о, д, н, о, з, в, 14, ч, н, 19, 20 р, а, з, д, а, е, т, с, я — 26, 22, и, з — м, е, н, я

Рис. 06.14

Принимая также только что упомянутое слово «оДнозвучный», мы получим текст, показанный на рис. 06.15.

в, с, 12, д, у — м, р, а, 17 — и — с, о, н — д, о, 17, у, ч, н, ы, й х, о, д — ч, а, с, о, в — 22, и, 23, 24 — о, д, н, о, з, в, у, ч, н, ы, й р, а, з, д, а, е, т, с, я — 26, 22, и, з, 24 — м, е, н, я

Рис. 06.15

Теперь очевидно, что 12 — это буква «ю», а 17 — «к» (рис. Об. 16).

О, д — ч, а, с, о, в — 22, и, р,     з, д, а, е, т, с, я — 26, 22, и, з — м, е, н, я

Рис. 06.16

Продолжая эти рассуждения с учетом правил стихосложения (размер стиха и др.), мы после всех поисков , проб, подстановок и т. п. получим следующее четверостишие А. С. Пушкина:

Мне не спится, нет огня,

ВСЮДУ мрак и сон Докучный; Ход часов лишь однозвучный Раздается близ меня.

ля расшифровки заданной криптограммы подсчитаем, сколько раз встречается в ней каждая буква. Результаты подсчета приведены в табл. 06.4.

Таблица 06.4

н

м

 

 

 

 

 

 

 

п

з ф ц б в

ж й л т

щ

ю

е

 

ы

11 9 6 6 5 5 4 3 3 3 3 3 3 2 2 2 2 2 2 2 2 1 1 1

Наиболее часто встречающийся символ «н», скорее всего, означает букву «о». Сделав такое предположение, рассмотрим следующий по частоте символ «м». В криптограмме имеется двухбуквенное сочетание «мн», а так как «н» — это «о», то символ «м» явно соответствует согласной.

Среди согласных в русском языке выделяются по частоте буквы «т» и «н» (см. табл. 6.1), и потому «м», скорее всего, означает одну из этих букв. Разберем случай, когда «м» означает «н», предоставляя читателю самостоятельно убедиться, что другая возможность не приводит к осмысленной расшифровке криптограммы.

Если «м» это «н», то в сочетании «мд», встречающемся в криптограмме, «д» означает, скорее всего, гласную. Из наиболее вероятных для «д» вариантов «а», «е» и «и» выбираем «е» , потому что лишь в этом случае имеющееся в криптограмме слово «ркнемДД» допускает осмысленную расшифровку.

Итак, три знака уже разгаданы: «н» это «о», «м» «н», — «е» . Обратимся теперь к сочетанию «ямякзж». В нем «я» может означать лишь гласную «а» или «и» , так как любые другие возможности заведомо не допускают разумного прочтения слова «ямякзж». Испытаем букву «а». Подставляя вместо «я» букву «а», вместо «м» — «н», а вместо других знаков — пока точки, получим недописанное слово «ана...». В русском языке имеется лишь несколько слов из 6 букв с таким началом: «анализ», «ана-

В том числе можно просто попытаться найти возможные варианты стихов по уже обнаруженным в них сочетаниям слов в Интернете и проверить, какой из них подходит под заданный шифр 9.

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

Теперь в слове «онкждм» нам известны все символы, кроме первого. Заменяя их буквами, получаем: « .олезен». Ясно, что неизвестная буква — это «п». Значит, «о» расшифровывается как «п» .

Остались неразгаданными еще два сравнительно часто встречающиеся знака — «о» и «р». Рассмотрим сочетание «ркнемДД», означающее « .ло.нее». Возможно немного вариантов его прочтения, и один из них «сложнее». Следовательно, скорее всего, — это «с», а «е» — это «ж».

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

Попытаемся теперь восстановить весь зашифрованный текст, подставляя вместо разгаданных знаков соответствующие им буквы:

.астотн.. анализ полезен не тол..о .л. по.стано.о.н..

      ..ипто..а.. но           И. сл..а.. он сложнее

Ясны (по контексту), по крайней мере, три слова: « .астотн.. » означает «частотный», «тол.,о» «только», а «ел.» — «для». С учетом новой информации текст примет следующую форму:

Частотный анализ полезен не только для поДстано.очны. к.ипто..а.. но . д...и. СЛ.ЧаЯ. он сложнее

Заключительная расшифровка уже не представляет никакого труда. Окончательный текст таков:

Частотный анализ полезен не только для подстановочных криптограмм, но в Других случаях он сложнее

6.10 Начать расшифровку можно, например, так. В тексте встречается однобуквенное слово «ю». Но из гласных букв отдельные слова составляют только «а», «о», «у», «я» и «и». (Есть еще, правда, междометие «э», но оно всегда выделяется какими-нибудь знаками препинания.) По аналогичным причинам «ч» может означать только один из предлогов: «в», «к», «с» или частицу «б». Далее, если бы «ю» означало «я», то в слове «лягяня» встре-


чалась бы три раза буква «ю». Но такое слово придумать очень трудно, Значения «о» и «у» для символа «ю» отпадают, так как после предлогов «о» и «у» не могут стоять слова «в», «к», «с» или «б». Перед союзом «а» всегда ставится запятая, поэтому «ю» не может обозначать «а». Итак, «ю» означает «и», а значит, «и» означает «ю». В дальнейшем мы будем это сокращенно записыватЬ « Ю » « И »

Единственная гласная, которая ни разу не встречается в тексте в начале слова и после согласных, это «у». Поэтому «й» е «у». Так как «я» и «е» встречаются в начале слова, то для «ы» остаются только три возможности: «а», «о» и «э». Но «э» очень редкая буква (см. табл. 6.1), а буква «ы» встречается часто. Поэтому очень маловероятно, что «э» е» «ы» .


Если предположить, что «ы» е «о», то последние три буквы в первом слове были бы такие: «ы», затем какая-то гласная и согласная. Это — тоже маловероятно. Остается предположить, что «Ы» е «а» . Для буквы «э» возможны тогда только значения «о», «я» и «е». Причем слово «лягяня» заставляет нас отбросить значение «я», а слова «пэжо» и «чтгыщюпмчо» значение «о». Следовательно, «э» е «е», а значит, «о» е «я». Это подтверждается и тем, что знак «е» встречается в тексте только один раз, и притом в начале слова, а знак «я» встречается целых семь раз. Такие частоты для зашифрованных этими знаками букв «э» и «о» вполне правдоподобны (см. табл. 6.1).

Итак, мы расшифровали все гласные буквы. Подставив в текст их значение, читатель сам легко разгадает и значения согласных.

6.11 При ключевом слове «ВАГОН» последовательность сдвигов букв при шифровании будет следующей: З, 1, 4, 16, 15, З, 4 и т. д. Это означает, что слово «АЛГОРИТМ» шифруется как «ГМЖЮЯЛУР», слово «ПРАВИЛА» — как «ТСДСЧОБ», а слово «ИНФОРМАЦИЯ» — как «ЛОШЮЯПБЪШН».

6.12 Ключ к шифровке можно найти, проанализировав слово

«ОБШКИИ». Можно предположить, что оно связано со словом «ошибки» (ведь именно об этом идет речь в условии и, вероятно, в шифровке). Анализ показывает, что шифр такой — сначала пишется первая половина слова с промежутками между буквами (например, «И С П Р А» или «О Ш И»), а затем промежутки заполняются остальными буквами этого слова («ИВСЬПТРЕА» или «ОБШКИИ»). Весь расшифрованный текст тогда будет таким:

ИСПРАВЬТЕ СТАРЫЕ ОШИБКИ И НЕ ДЕЛАЙТЕ НОВЫХ!

6.13

1.               Нет, это знать не обязательно. Обозначим общее количество букв в сообщении как п, а количество букв в ключевом слове как т. Поскольку получателю значения п и т известны, то количество строк в кодовой таблице s он может вычислить следующим образом (где div — операция целочисленного деления):

если п кратно п, то п div п иначе п div п + 1 все

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

2.               Зашифрован текст:

чем сложнее шифр тем труднее получателю секретного сообщения пользоваться им


Количество строк в кодовой таблице равно 12; количество букв в столбцах: 12, 11, 11, 11, 11 и 11.

З. Зашифрованный текст:

ОНДЕПЕЧААИТДТЛСКТЛНРЕАПЕЮСДООНОНЕГБКВ ААПНЬМВЧХЗТТДЖСИТУОУЫЕНЙОРЮ

6.14

1.  Расшифрованный текст:

встреча переносится на неопределенный срок

2.  Зашифрованный текст:

05044240414253040245015010131041334525

6.15

1.  Расшифрованный текст: Документы получил профессор.

2.  Зашифрованный текст:

18.16.23.10.14.14.24.3.9.5.16.24.1.9.9.0.4.5.20.

6.16 Можно догадаться, что картинка на рис. 6.6 соответствует трафарету, при наложении которого всеми возможными способами на квадрат с текстом в первом письме (таких способов, очевидно, будет четыре), можно выписать буквы, видимые через «окошки», и получить искомый текст: ЭТОТ ШИФР НАЗЫВАЕТСЯ ПОВОРОТНАЯ РЕШЕТКА.

6.17

1. Зашифрован текст: поздравляю тебе уДалось прочитать криптограмму отправь письмо в редакцию (пробелы расставлены по смыслу уже после расшифровки).

6.18 Возможные способы скрытия текстовой информации в документе Word:

1)                оформление символов цветом фона;

2)                размещение текста под наложенным поверх него рисунком; З) установка параметра шрифта «скрытый» , а также различные их комбинации.

Ответы к главе 7


                                 1 о 1                    1 1 1

1

1

1 О 0

                       1  1 1                         1 1

1

 

        1 1 0        1 1 1 1 11 1


                                                                          1 о 1 О                                                                               1 О О

        1 1               11.           1 1                19.       1 о 1 О

          1                                                                                    1 О О О                                                                                               1 о 1

1

1

1

о

1

1

1

1

1

1

1

1

1

1

1

 

1

1

1

1

1

1

1

о

1

1

о

1

О

1

1

1

1

о

1

1

1

1

0

о 1

1

1

1 1 1

                            12.              1 1 1           20.

1 1 о 1

1 1                          1  1

   1 1          1 1   1     1 1 1 1

      1 1                         122.

1 1 1     1 1 1 1 1

    1 о 1            15.        1 1                   23.

   1 о 1                      1 1

1      1                      1 1

   1 о 1                  1     1                 

1 0

                                 1 1                            1  1


1

1

1

1

 1

О О

0 О О

1  1 о

   1 1 1

   1

25.   1 о 1 1     27.   1      29.   1 1 1 1 о 1

1

1

 

                                             1 О О                                                                   1 О О О

                               1 1                            1 1 1

                                                                                   16.       

                                      12                       102                          33

                                                        12.      11             17.        13

           10                        10                        20                          22

                                                                                   22                 18.           21

10                 12  22     11     19.   


          11                       12                      101                         32

                           10.     22              15.     33             20.       13

          11                                                  101                          20


Составим таблицу умножения в шестеричной системе счисления:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

10

12

14

 

з

10

13

20

23

4

4

12

20

24

32

 

5

14

23

32

41

Из нее видно, что квадрат числа-цифры оканчивается на такую же цифру, что и само число, в трех случаях:

1) при У = 1;

2) при У = З; З) при У = 4;

В первом случае искомое произведение получается трехзначным. Во втором —, оно не оканчивается на две одинаковые цифры. А вот третий вариант нам подходит: 446 х 446 = 33446.

7.4

Ребус Лё 1

1. Очевидно, что первая цифра частного (Т) равна 1, а цифра, соответствующая букве Е, — О.

2. Так как И— Т = 1, а Т, как мы уже определили, равно 1, то И= 2.

З. Поскольку ТРИ х ТРИ = ИГРЕК, то с учетом того, что И = 2, имеем К = 4.

4.   так как К- Т, Г, то Г = З.

5.   Запишем все известные цифры:

Р о 4

1 Р 2 с 4 о

З о 4

З о 4


Тогда можно определить, что Р = 6 (см. таблицу умножения в двенадцатеричной системе счисления, приведенную в условии),

Ребус Лё 2

1.  Видно, что Е = 1 (так как ЗЕТ х Е = ЗЕТ).

2.  Тогда из первого вычитания следует, что Р = О.

З. Так как произведение Тх Т оканчивается на цифру 1 (цифру Е), то возможны следующие варианты: Т = 5, или Т = 7, или Т = В (см. таблицу умножения в двенадцатеричной системе счисления, приведенную в условии).

4.   Для каждого из этих трех возможных значений Т, полученных в предыдущем пункте, можно найти соответствующее значение буквы Б. Для этого вычислим произведение ЕТ х Т:

 

5

7

в

ГГ х Т

х

5

х

7

х

в

1 9 1

 

 

в

9

5.   Так как Б + Т = 10 (это следует из второго вычитания), то из трех вариантов единственно возможным является: Т = 5, Б = 7 (см. таблицу сложения в двенадцатеричной системе счисления).

6.   Подставим в запись ребуса уже известные нам цифры:

 ч 1 5 ы о 1| 3 1 5

       Ч О А З         3 1 5

Видно, что А = 8.

7.   Тогда из второго вычитания:

8 8 0 3 1 5 ы 3 7 следует, что З = 6, а Ы = 2.

8.   Расшифрованный пример:

3 1 5 2 о 1' 6 1 5


  3 0 8 6 1 5

Ребус Лё З

1.  Очевидно, что п = 1, а        о.

2.  Из таблицы умножения в двенадцатеричной системе счисления, приведенной в условии, следует, что в ней есть только две цифры (кроме уже использованной единицы), квадрат которых является однозначным числом. Поэтому И = 2 или И = З (см. второе произведение).

З. Проанализируем произведение:

х И К с и

Какой может быть цифра С при уже известных возможных значениях И? Из только что упоминавшейся таблицы можно определить, что:

   если И = 2, то С = 7;

   если И = З, то С = 5 или С = 9.

4. Рассмотрим произведение:

х и к с

в

Д В А

Так как произведение И х В не может быть двузначным числом, то:

• если И = 2, то В = З, В = 4 или В = 5; о если И = З, то В = 2, В = 4 или В = 5.

5.   Исследовав только что рассмотренное произведение для всех возможных сочетаний значений И, С и В (всего таких сочетаний будет 9), можно установить, что допустимым является только такое сочетание: И = З, С = 5, В = 4.

6.   Так как И = З, то из анализа произведения, рассмотренного в

п. З, следует, что К = 2, Р = 7, Т = 9.

7.   Полное решение ребуса:

1 4 6 в 9 в [ 3 2 5

    5          1 3 0 4 2 А

9 8 4

9 7 З


1 1 6 в

1 0 9 8

9 З 9

Ребус Л) 4

1.  Из второго вычитания видно, что А = О.

2.  Учитывая, что произведение С х С оканчивается на О (на А), по таблице умножения в двенадцатеричной системе счисления, приведенной в условии задачи, можно установить, что С = 6.

З. Так как произведение 6 х К(т. е. Сх К) оканчивается на О (на А), из той же таблицы видно, что К= 2, К = 4, К = 8 или К = А. Тогда рассмотрим все возможные варианты умножения числа ИК6 на 6 для перечисленных возможных значений К:

   Х И 2 6   х И 4 6   х И 8 6  Х И А 6

                      6                         6                         6                         6

Очевидно, что в любом случае Ч = З.

4. Запишем в ребусе все уже найденные цифры:

Т Ы 6 я 3 0 | И К 6

            И К 6

5.  Так как произведение 6 х И оканчивается на 6 (см. произведение ИКС на И), то по таблице можно установить, что И= 7, И= 9 или И = В (И * 1, иначе первое произведение было бы однозначным).

6. 


Рассмотрим произведение ИК6 х И = ЛЮК6 (а точнее Кб х И— ...Кб) для всех возможных вариантов сочетания значений К и И, найденных в пп. З и 5:

К

И

Кб х

Допустимо ли это?

2

5

106

Нет (К 0)

2

7

176

        Нет        7)

2

9

2А6

       Нет        А)

2

в

136

        Нет        3)

4

5

1А6

Нет (К * 4)

4

7

276

Нет (К * 4)

 

 

 

 

А

9

7А6

А

в

975

Нет (К * 7)

Отсюда можно определить, что К — 7. Полное решение ребуса:

8 1 6 2 3 01 9 А б

7.5 Обозначим искомое основание системы счисления через х.

Из крайнего справа столбца следует, что О = О, Для удобства запишем это в ребусе:

К И Т О К И О Т О т о к и о


Это означает, что перенос единицы «в уме» происходит из второго столбца в третий и из четвертого в пятый. Значит, можно записать следующие равенства:

Т+ Т= х + И•,

Тогда х = 7, И =

7.6

Кросснамбер Л) 1


Кросснамбер ЛЕ 2

Кросснамбер «Римская система счисления»

Примечание. О римских цифрах см. Приложение 1.

Кросснамбер «Двоичная система счисления»

Ответы к главе 8

8.1

1.              


Удивительное на первый взгляд «механическое» умножение на 9 станет понятным, если рассмотреть таблицу умножения первых десяти натуральных чисел на 9 :

01 х 9 = 09

Об х 9 = 54;

02 х            18,

07 х 9 = 63;

03 х 9 _ 27

08 х 9 _ 72

04 х 9 = 36;

09 х 9 = 81

05 х 9 = 45

10 х 9 _- 90.

Как видим, количество десятков в произведениях последовательно увеличивается на единицу: О, 1, 2, . 9, причем оно везде на 1 меньше числа, умножаемого на 9. Цифры же единиц, наоборот, уменьшаются на единицу: 9, 8, 7, О, и при этом сумма цифр произведения всегда равна 9 . Это означает, что, отметив поднятием соответствующего пальца необходимое число от 1 до 10, мы... и получаем искомое произведение!

2.               Обоснование возможности умножения любых однозначных чисел, больших 5, может быть следующим.

Начальная цифра О приписана для того, чтобы все произведения имели одинаковый вид.

Вспомните признак делимости чисел на 9.


8

Представим сомножители в виде (5 + а) и (5 + Ь), где а и Ь количества пальцев, загнутых на левой и правой руках. Тогда количества распрямленных пальцев будут равны (5 — а) и (5 — Ь). Объяснение же описанного способа умножения чисел содержится в следующих преобразованиях:

(5 + а) . (5 + Ь) = 25 + 5а + 5 Ь + ab =

          = 25 + 1 Оа — + 10b—                 = 10 • (а + Ь) + (5 — а) • (5 — Ь).

8.2

1.               Обозначим двузначное число (из шестого десятка) через п, а его последнюю цифру — через а, тогда п = 50 + а. Возведя обе части этого равенства в квадрат, получим:

          п2 = (50 +      = 2500 + 100 • а + а 2 = 100 • (25 + а) + а2

Таким образом, число, образуемое двумя последними цифрами результата, равно а , а число, образуемое двумя первыми его цифрами, равна сумме (25 + а).

Для чисел из пятого десятка рассуждения будут аналогичными:

(40 + а)2 = 1600 + 800 + = (1500 + 100) + (1000 - 20а) +

= (1500 + 1000) + (100 - 200 + 02 ) = (15 + а) • 100 + (10 -

2.               Правило, по которому можно быстро возводить в квадрат числа первого десятка шестой сотни (501, 502, 509), следующее. Если такие числа обозначить через п, то их квадрат представляет собой шестизначное число, у которого:

1)  число, образуемое первой и второй цифрами, равно 25;

2)  третья цифра равна количеству единиц в числе п;

З) четвертая цифра равна нулю;

4) число, образуемое пятой и шестой цифрами, равно квадрату количества единиц в числе п.

Можно также сказать, что число, образуемое третьей и четвертой цифрами, есть число, полученное в результате умножения на 10 последней цифры числа п.

8.3

8.3.5. Троекратно повторяющаяся цифра каждого произведения равна частному от деления второго множителя на З.

8.3.6. Правило умножения чисел в виде последовательности подряд идущих цифр от 1 до п (2 п 9) на 9 следующее: надо из числа, состоящего из (п + 1) единиц, вычесть число, на 1 большее, чем п.

Правило умножения чисел в виде последовательности подряд идущих цифр от п до 1 (2 п 9) на 9 такое:

1)результат — всегда (п + 1)-значный;

2)первая цифра результата равна (п — 1); З) последняя цифра результата равна 9;

4) все остальные цифры результата равны 8.

8.3.7. В рассмотренных случаях частное представляет собой последовательность цифр, начинающуюся с единицы и имеющую в качестве следующей цифры (если она не последняя) цифру, на единицу большую предыдущей. Разность же между последней и предпоследней цифрами равна не единице, а двум.

8.3.8. Полученные частные представляют собой периоДические десятичные дроби, в которых бесконечно повторяется группа из девяти цифр, записанных в скобках. Последняя цифра периоДа (этой повторяющейся группы цифр) совпадает с делимым, а предшествующая ей группа цифр (без учета первых нулей) получается в результате умножения числа 8 на делимое, т. е. на число 1, 2 9.

Дополнительные задания

1. Представим двух-, трех- или четырехзначное число, оканчивающееся на 5, в виде: (абс • 10 + 5), где abc — число, равное количеству полных десятков в представляемом числе (оно будет, соответственно, одно-, двух- и трехзначным):

(abc • 10 + 5)2 = (аьс 10) 2 + 2 • аьс 10 • 5 + 5 2

— (abc) 2 • 100 + аЬс • 100 + 5 2 = аЬс • (аЬс + 1) • 100 + 25.

Итак, чтобы возвести рассматриваемое число в квадрат, надо число, образованное количеством десятков в нем, умножить на ближайшее большее целое число и к произведению приписать 25. Это правило распространяется и на аналогичные более чем четырехзначные числа.

Оригинальный алгоритм возведения в квадрат трехзначных чисел, оканчивающихся на 5, предложила в 2006 году Евгения Кузнецова, ученица школы № 33 г. Ярославля. Рассмотрим его на примере числа 615:

1)                       рассматриваем число, образованное второй и третьей цифрами заданного числа, и делим его на 5: 15 / 5 = З;

2)                       к количеству сотен в заданном числе приписываем цифру, полученную в п. 1, — получаем число 63;

З) число, полученное в п. 2, умножаем на количество сотен:

63 • 6 = 378 — получаем первое произведение;

4)число, образованное второй и третьей цифрами заданного числа, возводим в квадрат (по правилу возведения в квадрат двухзначных чисел, оканчивающихся на 5): 15 • 15 = 225 — это второе произведение;

5)записываем число, образованное первым и вторым произведениями: 378225.

Дополнения к вышеприведенному алгоритму:

• если второе произведение больше 999, то количество тысяч из второго произведения складываем с первым произведением, а затем приписываем к результату второе произведение, но уже без цифры тысяч. Например, для числа 435 получаем: 35 / 5 = 7; 47 4 = 188; 35 • 35 = 1225; 188 + 1 = 189; результат: 189225;  если в п. 1 частное больше 10, то в п. 2 надо добавить 1 к количеству сотен в исходном числе и приписать к полученной сумме количество единиц в частном. Особенности второго произведения — те же, что и в предыдущем дополнении (оно больше 999). Например, для числа 365 имеем: 65 / 5 = 13; в п. 2 получаем (З + 1) • 10 + З = 43; тогда первое произведение: 43 • З — 129; второе произведение: 4225; результат: 133225.

Преимущество предложенного способа: в нем не приходится перемножать в уме два двухзначных числа (требуется лишь умножение двухзначного числа на однозначное).

З. Представим перемножаемые числа в виде: а = 10х + у,   Ь = 10х + z

(напомним, что при этом у + z = 10). Тогда

(10х + у) • (10х + г) = х • (10х + у + г) • 10 + yz, или, с учетом только что сделанного напоминания,

(10х + у) • (10х + z) = х • (10х + 10) • 10 + yz = 100х • (х + 1) + yz, что и требовалось доказать.

Ответы к главе 9

9.7 При обмене значений двух переменных можно в первом операторе вычисленную сумму присваивать переменной Ь; можно вычислять не сумму, а разность заданных значений и т. п. Вот два из нескольких возможных вариантов решения:

               Ь            Ь

А вот один из возможных вариантов обмена значениями трех переменных величин по указанной схеме:

Ь

с;

с

Ь

с;

Ь

с;

9.8

1. Основная часть программы:

алг История о попе и его собаке

нач

ВыводИстории (1 ) кон

Здесь ВыводИстории — это рекурсивная процедура, обеспечивающая вывод истории о попе и его собаке заданное число раз:

алг ВыводИстории (арг цел сколько) нач цел i если сколько > 0    то

вывод

нс,

”ИСТОРИЯ : ”

вывод

нс,

” У попа была собака,     

вывод

нс,

” он ее любил. ”

вывод

нс,

” Она съела кусок мяса, “

вывод

нс,

п он ее убил. ”

 

вывод

нс,

” Убил и закопал, ”

вывод нс, ”и на могиле написал: ”

Пауза нц для i от 1 до 100000

Рекурсивный вызов процедуры для вывода истории ' на 1 раз меньше, чем текущее значение числа выводов

          ВыводИстории ( сколько       1)

кон

2. Здесь нужно учесть, что а п = а * а п и что ао — 1. Требуемая рекурсивная функция в этом случае имеет вид:

10

алг вещ Степень (арг вещ а, цел п)

нач если п

ЗНаЧ1 Значение функции

иначе

Рекурсивное использование функции Степень знач а * Степень (а, п 1) все кон

З. Так как каждый член последовательности Фибоначчи, на-

чиная с третьего, равен сумме двух предыдущих членов, то можно оформить соответствущую рекурсивную функцию так:

алг цел Фибоначчи (арг цел К)

нач если К 1 или К       2

то знач 1 Значение функции

иначе

Рекурсивное использование функции Фибоначчи знач Фибоначчи (К — 2) + Фибоначчи (К 1) все

КОН

Ответы к главе 10

10.1

1.  1.1) 7500; 1.2) 6000.

2.  Второй способ выгоднее.

10.2

6. Ответ: 13 плиток.

10,4 Числа, обратные 11 и числам, кратным 11 (22, 33 и др.),

приведены в табл. О 10.1. Из нее следует, что две повторяющиеся цифры не содержат числа, обратные 77, 121, 143, 154, 187 и 209.

Задача о расчете значения Дроби. При использовании памяти калькулятора последовательность нажатий будет такой:

1

 

1

 

2

 

7

 

м—

с

14_1523

Таблица 010.1

Исходное число

Обратное число

11

0,09090909090909

22

О 045454545454545

33

о,озозозозозозозо

44

0,02272727272727

55

0,018181818181818

66

0,015151515151515

77

0,012987012987013

88

0,011363636363636

99

0,010101010101010

110

0,009090909090909

121

0,008264462809917

132

0,00757575757575

143

0,006993006993007

154

0,006493506493506

165

0,006060606060606

176

0,005681818181818

187

0,00534759358289

198

0,00505050505050

209

0,00478468899521

220

О , 00454545454545

Можно также использовать клавишу обратного числа. Для этого надо сделать следующие преобразования:

                                          7                 1

                                    1,1 +2,5       1,1 +2,5

Это означает, что искомое значение можно вычислить, нажимая клавиши:

или

10

Иными словами, можно сначала найти знаменатель дроби, затем вычислить обратное ему число, а результат умножить на числитель.

10.5 Ответы приведены в табл. 010.2 (для английского языка), 010.3 (для немецкого языка) и 010.4 (для французского языка).

Таблица 010.2

 

Результат

Слово

Перевод

1.1

338

ВЕЕ

Пчела

1.2

618

BIG

Большой

1.3

8078

ВОВ

Капелька

1.4

7108

ВОШ

Кипятить

1.5

663

EGG

Яйцо

1.6

919

GIG

Кабриолет

1.7

379919

GIGGLE

Хихихать

1.8

38076

GLOBE

Глобус

1.9

806

(ЮВ

Рот

1.10

35006

GOOSE

Простак

1.11

7334

HEEL

Крен

1.12

7714

HILL

Холм

Таблица 010.з

 

Результат

Слово

Перевод

2.1

73834

НЕВЕЬ

Рычаг

2.2

73804

НОВЕЬ

Рубанок

2.3

37404

Пещера

2.4

7138

ВЕШ

Топор

2.5

37704

НОЛЕ

Ад

2.6

3504

HOSE

Брюки

2.7

7134

НЕШ

Счастье

2.8

773836

GEBELL

Лай

2.9

51376

GLEIS

Колея

2.10

363436

GEHEGE

Ограда

2.11

36136

GEIGE

Скрипка

2.12

1378

BLEI

Лещ

Таблица 010.4

 

Результат

Слово

Перевод

3.1

37718

BILLE

Шарик

3.2

378

BLE

Зерно

3.3

310

ОШ

Гусь

3.4

5108

вов

Роща

3.5

708

BOL

Пиала

3.6

38376

GLEBE

Поле

3.7

38076

GLOBE

Глобус

3.8

378314

HIEBLE

Бузина

3.9

371

 

Остров

3.10

36317

LIEGE

Пробковая кора

Примечание. Некоторые из этих иностранных слов имеют и другие значения; найдите их самостоятельно.

ответы к главе 12

12.2 Стратегия, пользуясь которой, можно отгадать задуманное число за минимальное количество попыток, следующая. Если задуманное число находится в интервале от а до Ь, то необходимо в качестве ответа указать число, находящееся в середине этого интервала. Затем в зависимости от ответа («Загаданное число больше» или «Загаданное число меньше») выполняется переприсваивание ранее введенное в качестве ответа число становится одной из границ интервала, уменьшая его длину. Далее вводится число, соответствующее середине нового интервала, в котором находится отгадываемое число, и т. д., пока введенное число не совпадет с задуманным. Такой способ поиска называют «методом деления отрезка пополам» или «методом половинного деления» (см. также фокус 11.4, стр. 161).

12.5

Возможные ответы компьютера:

*     ОБ ОК — нуль «быков», нуль «коров»;  1Б ОК — один «бык», нуль «коров»;

*     ОБ 1k — нуль «быков», одна «корова»;

— один «бык», одна «корова»;


два «быка», нуль «коров»;

*     ОБ 2k — нуль «быков», две «коровы»; два «быка», одна «корова»; один «бык», две «коровы»;


                             13                                                                                           365,

два «быка», две «коровы»;

*     ЗБ ОК — три «быка», нуль «коров»;

*     ОБ ЗК — нуль «быков», три «коровы»;

*     ТБ ЗК — один «бык», три «коровы»;

*     4Б ОК — четыре «быка», нуль «коров» — это означает, что число отгадано;

*     ОБ 4К — нуль «быков», четыре «коровы».

Обратите особое внимание, что среди перечисленных ответов нет варианта «ЗБ 1 К» (три «быка», одна «корова»). Почему подумайте самостоятельно.

Ответы к главе 13

13.1

Поряд- ковый номер хода

КакИМ признаком

руководствуется

Тезей

ход

Пройденный коридор

Цвет коридора после его прохождения

1

Зеленая улица

Разматывание

 

Желтый

2

Зеленая улица

Разматывание

 

Желтый

З

Пятый случай

Наматывание

5—2

Красный

4

Зеленая улица

Разматывание

2—3

Желтый

5

Зеленая улица

Разматывание

 

Желтый

6

Зеленая улица

Разматывание

 

Желтый

7

Зеленая улица

Разматывание

 

Желтый

8

Зеленая улица

Разматывание

7— 10

Желтый

9

Минотавр

Остановка

 

 

Действия человека, решающего эту задачу, должны быть такими (записываем после каждого этапа последовательность номеров комнат, через которые проходит нить):

1

1, 2

1

1, з, 10

1, з, 11

1, з, 11, 8

1, з, 11,

1, з, 11, 8

1, з, 11,

з, 11, 8, 7 6

з, 11, 8, 7, 6, 1

       1, з, 11,          6

1, з, 11,

1, з, 11, 8

1, з, 11

1, з, 11, 12

1, з, 11, 12, 13

1, з, 11, 12, 1 З , 14

1, з, 11, 12, 13

1, з, 11, 12, 13, 15

1, з, 11, 12, 13, 15, 16

Дополнительное задание

Выберите какую-нибудь другую нумерацию комнат 2, З 15 и вновь решите эту же задачу.

Ответы к главе 14

14.1 Возведение в квадрат некоторой суммы денег не имеет смысла. В квадрат возводятся числа, а не величины.

14.2 Числа 4 и 5 нельзя выносить за скобки показанным способом.

14.3 Проанализируем рассуждения, идя от полученного равенства 4 = 4 «назад».

Если квадраты чисел равны, то это еще не означает, что равны и сами эти числа! Из равенства квадратов двух чисел вытекает лишь, что равны абсолютные величины этих чисел. Поэтому если 4 = 4, то извлечение квадратного корня из обеих частей означает, что 2 = 2 либо —2 = —2, но еще не означает, что 2

14.4 После извлечения квадратного ко ня из обеих частей равенства (2 — 5/2) = (З — / 2) 2 записывать 2 — / 2=3 — /2 нельзя (см. объяснения к предыдущему софизму).

14.5 Нельзя части равенства делить на 7 + 2     9, так как 7 + 2 — 9 = 0.

14.6 Уравнения системы несовместны. Поэтому и получается неверное равенство 4 = 8.

14

14.7—14.8 Объяснение такое же, как и в софизмах 14.3 и 14.4.

14.9 Причина «странного» результата следующая: в равенстве а(а — Ь — с) = Ца — Ь — с) делить обе части на а — Ь — с нельзя, так как а — Ь — с = О (поскольку было принято, что а = Ь + с).

14.10 Здесь тоже нельзя делить обе части равенства на (а — Ь), так как а — Ь = О.

14.11 Указанное свойство — если в пропорции предыдущий член первого отношении больше последующего, то и предыдущий член второго отношения больше своего последующего — может оказаться неверным, если какие-то члены пропорции отрицательны.

 Деление на (а — а) недопустимо, так как эта разность всегда равна нулю.

14.13 Ошибка этого «доказательства» — также в переходе от равенства квадратов к равенству чисел, возводимых в квадрат.

14.14 Ошибка в приведенных рассуждениях состоит в том, что значение lg— является отрицательным, поэтому при делении обе-

их частей неравенства 21g—>31g— на отрицательное число знак неравенства должен быть изменен (2 < З).

14.15 В этом софизме неправильным является переход от равенства с — 0) = (К — к равенству с — = К — и.

14.16 Дело в том, что первоначально хитрый хозяин гостиницы разместил в восьми номерах не десять, а девять гостей (см. табл. 014.1).

Таблица 014.1

Обозначение комнаты (номера гостиницы)

А

Б

в

 

ж

 

 

Порядковый номер комнаты

1

2

з

 

7

8

 

Порядковый номер гостя

1, 2

з

4

 

8

9

 

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

Он ключ от «И» вручить был рад Десятому герою.

14.19

Каждый солдат может сам себя брить или бриться у другого солдата. Генерал издал приказ о выделении одного специального солдата-брадобрея, у которого брились бы только те солдаты, которые сами себя не бреют. У кого должен бриться сам этот специально выделенный солдат?

Если он должен брить себя сам, то он не может быть брадобреем, так как у него должны бриться только те солдаты, которые сами себя не бреют. Если же он хочет бриться у другого солдата, то он уже не будет специально выделенным брадобреем. Следовательно, специально выделенный солдат не может ни сам себя брить, ни бриться у другого солдата.

14.20

Книжный каталог (перечень книг и других каталогов) может быть двух видов:

1)                       такой, который в числе перечисляемых каталогов не упоминает себя («нормальный»);

2)                       такой, который сам входит в число перечисляемых в нем каталогов («ненормальный»).

Библиотекарю дали задание составить каталог всех нормальных и только НОРЛШЛЬНЫХ каталогов. Должен ли он при составлении своего каталога упомянуть и составленный им каталог?

Если этот каталог должен упоминаться сам в себе, то это будет уже «ненормальный» каталог, а значит, такой каталог не должен составляться. Если же он не должен упоминаться, то составленный каталог будет нормальным, а следовательно, он обязательно должен быть упомянут в составленном каталоге (чего, как только что сказано, делать нельзя). Итак, библиотекарь не может ни упомянуть составленный им каталог, ни не упомянуть его.

Ответы к главе 16

16.1 На основании ответов своих приятелей Виктор действительно может определить цвет своей шапки. Из ответа Антона обоим его друзьям должно быть ясно, что на них не может быть двух белых шапок (иначе Антон тут же определил бы, что на нем — черная шапка). Значит, на них либо одна белая и одна черная шапки, либо обе шапки черные. Но, если бы на Викторе была белая шапка, то Борис (зная те же рассуждения об Антоне) легко определил бы цвет своей шапки (черный). Так как он этого сделать не смог, то Виктор может понять, что его шапка черная.

16

16.2 Ответы на все вопросы, заданные в задаче, для всех возможных вариантов реплик Антона, Бориса и Виктора приведены в табл. 016.1 (вариант ответа Бориса «Не могу определить цвет своей шапки» был рассмотрен в задаче 16.1).

Таблица 016.1

Ответ

Антона

Перед

Антоном

Ответ Бориса

Ответ Виктора

1. «Могу определить цвет своей шапки»

Две черные или две белые шапки

1. «Могу определить цвет своей шапки »

« Не могу определить цвет своей шапки »

2. «Могу определить цвет своей шапки » и назовет цвет

« Могу определить цвет своей шапки » и повторит названный Бо исом цвет

2. «Не могу определить цвет своей шапки»

Одна черная и одна белая шапки

1. «Могу определить цвет своей шапки»

« Не могу определить цвет своей шапки »

2. «Могу определить цвет своей шапки» и назовет цвет

« Могу определить цвет своей шапки » и назовет цвет, « противоположный » названному Бо исом

16.3 Каждый из трех студентов оказался в одной и той же ситуации — он видел перед собой товарищей в двух белых шапках и рассуждал следующим образом:

«Допустим, на мне черная шапка. Тогда кто-то из двух других студентов видит одну белую и одну черную шапку и думает над цветом своей шапки. Допустим, он, рассуждает так:

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

Но так как этот второй студент молчит, значит, он не видит черную шапку, следовательно, на мне тоже белая шапка» .

Так рассуждал каждый из трех студентов, видя перед собой товарищей в белых шапках, и каждый пришел к выводу о белом цвете своей шапки, причем студенты сделали это одновременно.

16.4 При «умном» сговоре гарантированный суммарный выигрыш составит п — 1 рублей (!), т. е. наверняка правильно ответят все, кроме одного гномика.

Для этого гномик, сидящий последним (и отвечающий первым), смотрит на шапку сидящего перед ним и называет ее цвет. Тот, в свою очередь, услышав ответ, правильно называет цвет своей шапочки. Но он может сделать это с различной интонацией, с правильным или неправильным ударением, громко или не очень. Тогда, например, если цвет шапки был назван им с пра-

вильным ударением, то это значит, что у впереди сидящего гномика такой же цвет шапочки, как у него, а если с неправильным ударением — другой. При этом все гномики, кроме, может быть, сидящего последним, услышав ответ своего «предшественника» , правильно назовут цвет своей шапочки. А если цвет шапочки на последнем гномике совпадет с цветом шапочки на предпоследнем, то выигрыш может составить и все п рублей.

Если же допустить, что гномики не могут произносить одни и те же слова с разным ударением или с разной интонацией и т. п., то предложенные методы не «сработают». Однако и в этом случае «умный» сговор возможен, он носит «математический» характер и состоит в следующем.

Гномик, сидящий последним (на самом верхнем ярусе), подсчитывает количество белых шапочек перед ним (назовем его S06ux) и отвечает «черная» , если это число четное, и «белая» — если нечетное. Таким образом, он сообщает всем другим гномикам четность количества белых шапочек на них (это четность числа s06ux)•

Каждый из остальных гномиков, получив вопрос о цвете своей шапочки, подсчитывает количество белых шапочек перед ним и складывает его с количеством ответов «белая» , уже данных гномиками, находящимися между ним и гномиком, сидящим последним. Обозначим полученную сумму как S. После этого он сравнивает четность суммы S с четностью числа S06ux. Если четности S и совпадают, то этот гномик отвечает «черная», а если не совпадают — «белая». Самостоятельно убедитесь, что при таких условиях отвечающий вторым и все его товарищи, сидящие перед ним, смогут точно определить цвет своих шапочек.

Итак, при выполнении правил такого сговора все гномики, кроме сидящего последним, правильно назовут цвет своей шапочки. Сидящий же последним (и отвечающий первым) может отгадать цвет своего головного убора с вероятностью 50 0/0 , но именно от него зависит выигрыш «всей команды» .

16.5 Нужно вынуть любую шапку из коробки с надписью «Черная и белая» . Если вынутая шапка белая, значит, и вторая должна быть белой (ведь по условию все надписи на этих коробках ложны, а значит, случай, когда после вынимания из данной коробки белой шапки в ней останется черная, исключен). Тогда в коробке с надписью «Две черных» должны быть черная и белая шапки, а в коробке с надписью «Две белых» — две черные шапки.

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

17

Ответы к главе 17

17.5 Конечно, ответ играющего всегда будет неправильным! Дело в том, что (как, наверное, уже обнаружил внимательный читатель) после ввода ответа первоначальные значения сомножителей меняются. Это связано с тем, что указанные значения выбираются случайным образом с использованием функции СЛЧИС(). Каждый раз, когда рабочий лист перевычисляется (а это происходит, когда хотя бы в одной из ячеек значение изменяется), эта функция возвращает новое случайное число.

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

Ответы к главе 18

18.1 Если пронумеровать ломтики, то задача поджаривания четырех ломтиков за минимально возможное время решается за четыре шага (этапа), представленных в табл. 018.1, а пяти ломтиков за пять шагов, показанных в табл. 018.2.

Таблица 018.1

этапа

На сковородке                    находятся:

Продолжительность

поджаривания, с

Готов

ломтик

Ломтик

Сторона

1

 

Первая

зо

 

 

Первая

 

2

 

Вторая

зо

 

 

Вторая

 

з

 

Первая

зо

 

 

Первая

 

4

 

Вторая

зо

 

 

Вторая

 

 

Всего

2 минуты

 

Таблица 018.2

этапа

На сковородке находятся:

Продолжительность поджаривания, с

Готов ломтик

Ломтик

Сто она

1

 

Пе вая

зо

 

 

Первая

 

2

 

Вторая

зо

 

 

Первая

 

з

 

Вторая

зо

 

 

Вторая

 

4

 

Пе вая

зо

 

 

Пе вая

 

5

 

Вто ая

зо

 

 

Вторая

 

 

Всего

2,5 минуты

 

18.2

Признайтесь честно 9, уважаемый читатель, что сначала вы пытались решить эту задачу так же, как и предыдущую. Между тем здесь все достаточно просто — задача решается за один переход из одной комнаты в другую! Надо включить одну клавишу, подождать некоторое время (скажем, 5 минут), выключить ее и включить вторую, после чего сразу идти в комнату с лампочками. Одна клавиша в этот момент включена — соответствующая лампочка горит; из двух других та лампочка, что недавно горела, будет заметно горячее той, которая все это время была выключена. Той лампочке, что горячее, соответствует клавиша, которая была включена и потом выключена, а оставшейся холодной — клавиша, которую совсем не трогали.

18.3

Более короткий вариант решения задачи:

1—2. Одновременно запустить 8-минутные и 3-минутные часы, но

эликсир пока готовить не начинать.

З. Когда 3-минутные часы «остановятся» (прошло З минуты)

запустить их еще раз.

4.   Еще через З минуты опять запустить 3-минутные часы (с начала прошло 6 минут).

5.   Когда 8-минутные часы «остановятся», опять запустить их.

6.   Когда 3-минутные часы «остановятся» (с начала прошло 9 минут), начать готовить эликсир.

Когда 8-минутные часы «остановятся» — эликсир будет готов (с начала прошло 16 минут, а эликсир готовился ровно 7 минут). Общее количество операций по переворачиванию — 5.


Дополнительные зада чи:

1.

1—2. Одновременно запустить 4-минутные и 10-минутные часы, но эликсир пока готовить не начинать.

З. Когда 4-минутные часы «остановятся» (прошло 4 минуты) запустить их еще раз и пока по-прежнему не готовить эликсир. 4. В момент «остановки» 4-минутных часов (прошло 8 минут) начать готовить эликсир. Когда «остановятся» 10-минутные часы — эликсир готов (он готовился 10 — 8 = 2 мин).

Описанные действия можно проиллюстрировать схемой, показанной на рис. 018.1. Здесь и далее числами обозначены номера операций (установок и переворачиваний часов), буквой н момент начала, а буквой к — конца приготовления эликсира.

Вторые часы (10 мин)

Первые часы (4 мин)

н

Рис. 018.1

2.

1—2. Одновременно запустить 3-минутные и 4-минутные часы. З. Когда 3-минутные часы «остановятся» (прошло З минуты) запустить их еще раз.

4. Когда «остановятся» 4-минутные часы (с начала отмеривания прошло 4 минуты, а с момента второго запуска 3-минутных часов — 1 минута), начать готовить эликсир.

В момент «остановки» 3-минутных часов эликсир готов (он готовился З — 1 = 2 мин).

Схема алгоритма представлена на рис. 018.2.

Первые часы (З мин)

Вторые часы (4 мин)

Рис. 018.2

Решение остальных задач приведено только в виде схем. (Соответствующую запись алгоритма вы можете восстановить по ним самостоятельно. Масштабы времени в разных решениях могут не совпадать.)

Первые часы (З мин)

 

 

 

Вторые часы (10 мин)

 

з.

0183

'

Вторые часы (9 мин)

 

Первые часы (4 мин)

4.

Первые часы (4 мин)

 

 

 

 

 

 

Вторые часы (11 мин)

2

Рис. 018.4 5.

Рис. 018.5 6.

Первые часы (6 мин)

 

 

 

 

Вторые часы (14 мин)

Рис. 018.6

7. Здесь возможны два алгоритма, равнозначных с точки зрения количества выполняемых операций (см. рис. 018.7 и 018.8).

Первые часы (З мин)

Вторые часы (5 мин)

н

Рис. 018.7

Первые часы (З мин)

 

Вторые часы (5 мин)

Рис. 018.8

Первые часы (З мин)

Вторые часы (8 мин)

нк

8.

Первые часы (З мин)

Вторые часы (8 мин)

 

Рис. 018.9 9.

Рис. 018.10

 

Первые часы (7 мин)

 

Вторые часы (8 мин)

Первые часы (7 мин)

 

Вторые часы (12 мин)

Рис. 018.11 11.

018.12

 

375

Первые часы (5 мин)

н      к

Вторые часы (6 мин)

12.

Вторые часы (10 мин)

 

Первые часы (6 мин)

Рис. 018.13 13.

Рис. 018.14

 

Первые часы (6 мин)

 

 

Вторые часы (16 мин)

 

к

Рис. 018.15

 

 

Первые часы (6 мин)

 

 

 

 

 

 

 

Вторые часы (22 мин)

 

к

Рис. 018.16

16. Для этой задачи тоже возможны два алгоритма, равнозначных с точки зрения количества выполняемых операций (рис. 018.17 и 018.18).

Первые часы (З мин)

 

 

 

 

 

 

Вторые часы (11 мин)

2

к

Рис. 018.17

Первые часы (З мин)

 

 

 

 

 

 

Вторые часы (11 мин)

Первые часы (5 мин)

Вторые часы (8 мин)

 

Рис. 018.18 17.

Рис. 018.19

 

Первые часы (7 мин)

 

 

Вторые часы (10 мин)

Рис. 018.20

 

Первые часы (9 мин)

Вторые часы (11 мин)

 

018.21


20. Здесь тоже возможны два алгоритма, равнозначных с точки зрения количества выполняемых операций (см. рис 018.22 и 018.23.

Первые часы (5 мин)

 

 

 

 

 

 

Вторые часы (11 мин)

2

 

н

к

Рис. 018.22

Первые часы (5 мин)

 

 

 

 

 

 

Вторые часы (11 мин)

Рис. 018.23 21.

Первые часы (5 мин)

 

 

 

 

 

 

Вторые часы (12 мин)

н

Рис. 018.24 22.

Первые часы (7 мин)

 

 

 

Вторые часы (9 мин)

6

 


Рис. 018.25

 

Первые часы (5 мин)

 

 

 

 

Вторые часы (16 мин)

н

к

Рис. 018.26

Первые часы (5 мин)

1

з

4

5

7

8

9

10

Вторые часы (16 мин)

н

 

24.

Рис. 018.27

25. В этой задаче лучшим является алгоритм, схема выполнения которого представлена на рис. 018.28.

Первые часы (5 мин)

1

3 4

5 '7 8

 

к

Вторые часы (16 мин)

Рис.018.28

Дополнительное задание

Исследуйте, являются ли приведенные алгоритмы лучшими с точки зрения общего времени, затраченного и на ожидание момента начала приготовления эликсира, и на само его приготовление (т. е. начиная с первой установки часов — точки 1 и до точки к).

18.4 Главная идея решения этой задачи заключается в том, что, уходя из дома, надо пустить в ход свои часы (которые остановились, но не сломались!) и заметить по ним, в котором часу вы вышли, а затем — в котором часу вернулись. Так по своим часам можно определить, сколько времени вы отсутствовали. Придя к товарищу и уходя от него, вы оба раза запоминаете показания его часов. Это даст вам возможность определить продолжительность пребывания у товарища. Вычитая теперь из продолжительности времени, которое вы отсутствовали дома, продолжительность пребывания у товарища, вы получите количество времени, затраченного на дорогу туда и обратно. Прибавив половину этого количества времени к показанию часов товарища, когда вы от него уходили, вы получите то показание часов, на которое надо поставить ваши остановившиеся часы.

В соответствии с этим алгоритм решения задачи следующий.

1.  Пустить в ход свои часы.

2.  Отметить время ухода из дома по этим часам (toy).

З. Пойти к товарищу.

4.      


Отметить время прихода к товарищу по его часам (t1I1).

5.       Уходя от товарища, определить время ухода (также по его часам — t1y).

6.       Рассчитать время пребывания у товарища (разность значений времени t1 — t1y

7.       Вернуться домой.

8.       Определить время возвращения домой по своим часам (Љп).

9.       Рассчитать время, которое вы отсутствовали дома (разность значений времени to toy).

10.  Вычесть из значения времени to значение t1.

11.  Разделить полученное в предыдущем пункте значение на 2: t= to t1

2

12.  Прибавить значение t к времени t1y.

13.  Поставить стрелки своих часов на время, вычисленное в пункте 12 (т. е. t + t1y).

18.5     Минимальное количество разрезов, требующееся для решения задачи, равно 17 (рис. 018.29).

После всех этих разрезов каждый из восьми человек получит 1/ 2 + 1/4 + 1/8 = 7/8 хлеба.

4 разреза

6 разрезов

7 разрезов

Рис. 018.29

18.6     Рассмотрим следующую возможную инструкцию стрелкам, которая, на первый взгляд, представляется наиболее естественной. Сначала опишем часть инструкции, которая рассчитана на случай, если пакет будет вручен левофланговому. Она состоит из ряда указаний, где первые два указания обеспечивают выполнение обычной команды « слева направо по порядку рассчитайся! » .

Указание 1 . Если ты левофланговый и получил приказ «шеренга, пли» , то запомни свой номер 1 и сообщи его правому соседу.


Указание 2. Если ты не правофланговый и левый сосед сообщил тебе номер v, то запомни свой номер (v + 1) и в следующую секунду сообщи его правому соседу.

В соответствии с этой частью инструкции на п-й секунде все стрелки уже будут знать свои порядковые номера. Дальнейшие указания регулируют обратный поток информации от правофлангового к левофланговому.

Указание З. Если ты правофланговый и левый сосед сообщил тебе номер (п — 1), то в следующую секунду отвечай ему «готов!» и приступай к обратному счету в уме: п, п — 1, п — 2 , т. е. в каждую секунду отсчитывай по одному числу.

Указание 4. Если твой порядковый номер v и правый сосед доложил тебе «готов!» , то со следующей секунды приступай к обратному счету v, v — 1 • при этом если v > 1 (т. е. если ты не левофланговый), то в следующую секунду доложи левому соседу «готов!» .

Указание 5. Досчитав до нуля, стреляй!

Аналогичные указания даются на случай, если приказ получен правофланговым. Этим описание инструкции исчерпано.

Ясно, что, руководствуясь такой инструкцией, стрелки выстрелят одновременно ровно через 2n секунд после того, как левофланговый (правофланговый) получил приказ. Полезно также заметить, что ни при какой другой мыслимой инструкции, которая основана на дозволенной процедуре общения, время, необходимое для доведения приказа до всех стрелков, не может быть меньше п, ибо никакая информация, исходящая от левофлангового, не может достичь правофлангового раньше этого времени.

18.7 Если знак операции определения остатка от деления одного целого числа на другое обозначить как mod, то ЛТ-й год является високосным, если лт mod 4 = О И лт 100 О ИЛИ mod 400 = О (напомним, что последний год столетия является високосным, только если его номер делится на 400).

18.8 Оптимальный вариант решения задачи приведен в табл. 018.3.


Таблица 018.з

Цифра

Условие

О

4 ИНЕ

1

3И4

2

НЕ 5 и 7

з

3И7

4

5

1 ИНЕ 6ИНЕ7

6

НЕ 1 и 6

7

8

НЕЗИ5И6

9

НЕЗИ5И7

18.9 Так как каждое из приведенных утверждений исключает остальные, то среди них не может быть более одного истинного утверждения. Составим таблицу, в которой рассмотрим возможную истинность каждого утверждения (табл. 018.4).

Таблица 018.4

Истинно утверждение

Количество ложных утверждений, согласно ему

Количество истинных утверждений, согласно ему

Первое

1

9

Второе

2

8

Третье

з

7

 

 

 

Восьмое

8

2

Девятое

9

1

Десятое

10

 


 

380

Первые восемь утверждений не могут быть истинными, так как из них следует, что количество истинных утверждений больше 1, а это противоречит им самим. Десятое утверждение не может быть истинным, так как, согласно ему, ни одно из утверждений не является истинным, а значит, и оно само не может быть таким. Следовательно, истинно только одно — девятое — утверждение.

18.10 Будем для краткости называть «мертвую воду» N2 п «ядом» № п. В зависимости от того, когда выпит яд .N2 10, он может служить и ядом, и противоядием. Можно сказать, что действие яда .N2 10 аналогично логической операции отрицания его действие приводит к «изменению» жидкости, выпитой до этого, на «противоположную». Так, если его принять после другого яда, то в результате получится не яд, а обыкновенная вода, т. е. можно остаться живым. Если же выпить его после обыкновенной воды (не являющейся ядом), то он подействует как яд. То есть верна следующая запись:

НЕ(Яд) = Вода;

НМ Истина) = Ложь;

НЕ(Вода) = яд;

НЕ(Ложь) = Истина;

   = яд;

   = Истина.

Иванушка-дурачок заранее перед дуэлью выпил яд из одного (любого) из источников, а потом яд .N2 10 как противоядие, и в результате остался живым. Кощею же он дал кружку обыкновенной воды, после которой тот выпил яд .N2 10 и умер. Так что не такой уж и дурачок был Иванушка на самом деле! ©

Да, возможно. Два человека, о которых говорится в условии, — это отец и мать сына, о котором идет речь. (Примечание:

вариант ответа — «отец и отчим» является ошибочным, так как приемный сын отчима называется «пасынок» . )

18.12 Может, если профессор — женщина. Сын ее отца — это ее брат, а отец ее сына — ее муж, которые и разговаривают друг с другом.

18.13 Это был портрет сына Умникова (вычурный ответ последнего следует понимать так: «Отец висящего есть я», а сам Умников — единственный сын своего отца, т. е. дедушки того, кто изображен на портрете).

18.14 «Вышел зайчик погулять» (в первой строке записаны числа от 1 до 5 в двоичной системе счисления).

18.15 Все числа в этом стихотворении записаны в двоичной системе счисления. Обратим внимание, что при чтении стихотворения вслух слова Десять (10), стоногий (100-ногий) и т. п. произносить нельзя — эти слова являются названиями чисел только в десятичной системе счисления. Поэтому слово «десятком» в этом стихотворении является неправильным!

18.16 Для записи числа 168 в двух разрядах надо использовать систему счисления с основанием больше 12, например шестнадцатеричную систему, в которой число 168 записывается в виде А8.

18.17 Это представление числа 16 в троичной системе счисления, т. е. 121. Действительно, в последовательности записаны представления числа 16 в 16-ричной системе счисления, потом в 15-ричной, 14-ричной и т. д.

18.18 Чтобы спастись, Иван Царевич должен назвать числа: Х = 10000 (100 2 ), У = 100 и Z = 1. В этом случае сумма ах + ЬУ + cZ, сообщенная Кощеем, будет представлять собой запись числа в 100-ичной системе счисления с тремя двузначными «цифрами», равными а, Ь и с. Например, если Кощей Бессмертный загадал числа 23, 70 и 66, то он должен будет сообщить сумму 237066. По этому шестизначному числу Иван Царевич может легко определить задуманные двузначные числа (разбив полученное число на пары цифр).

18.19 Прежде всего, вспомним задачу 1.4, при решении которой использовалась запись чисел в двоичной системе счисления.

На рычажных чашечных весах при взвешивании груза камни можно размещать на обеих чашках — и на свободной, и вместе с грузом. Следовательно, в нашей задаче надо найти такой набор чисел, которые можно не только складывать, но и вычитать. Если здесь также рассматривать представление десятичных чисел 1, 2 40 в двоичной системе счисления, то выяснится, что для взвешивания понадобится 6 разных камней — массой 1, 2, 4, 8, 16 и 32 кг (убедитесь, что с их помощью можно определить все нужные значения!). В условии же задачи говорится только о четырех камнях. Значит, надо попробовать использовать другие системы счисления.

Чтобы определить, какую именно систему счисления надо использовать, рассмотрим более простую задачу: «С помощью какого минимального набора камней разной массы можно взвешивать предметы массой 1, 2, З и 4 кг?». Ответ здесь прост: с помощью двух камней массой 1 и З кг. Это должно навести на мысль о том,

i 382

что нужно использовать троичную систему счисления. Действи-

получить, складывая или вычитая числа 13, 103, 1003, и 10003 (убедитесь в этом!). Каждое из этих чисел есть тройка в степени О, 1, 2 и З, т. е. десятичные числа 1, З, 9 и 27, — именно такой массы и были камни в лавке бедного торговца.

Дополнительное задание

Подумайте, как определить, какие камни (или гири такого же веса) надо класть вместе с грузом, а какие — на свободную чашку, чтобы при грузе массой А кг весы были в равновесии.

18.20 Сказанное мальчиком возможно, если его день рождения — 31 декабря, а мальчик говорит это 1 января.

18.21 Из предыдущей задачи следует, что З года — максимально возможная разность возраста человека между «возрастом в будущем году» и «возрастом позавчера». Кроме того, такая разность может быть равной 1 (позавчера было V полных лет, в будущем году исполнится (У + 1) лет) и 2 (день рождения— «вчера» , позавчера было полных лет, вчера стало (V + 1) лет, в будущем году исполнится (У + 2) лет). Если же разность записанных возрастов превышает З, то это значит, что возрасты указаны в системе счисления, отличной от десятичной. О такой возможности говорит и тот факт, что в условии задачи использовано слово «написал» (в «недесятичных» системах счисления о числе 16 нельзя сказать: «шестнадцать»).

Рассмотрим возможные варианты для систем счисления с основанием от 6 до 9 (см. табл. 018.5).

Из табл. 018.5 следует, что написанное юношей может быть верно в трех случаях:

1)                       когда разность «десятичных» возрастов равна 1 (фактические возрасты — 13 и 14 лет), а возрасты написаны в семеричной системе;

2)                       когда разность «десятичных» возрастов равна 2 (фактические возрасты — 14 и 16 лет), а возрасты написаны в восьмеричной системе;

З) когда разность «десятичных» возрастов равна З (фактические возрасты — 15 и 18 лет), а возрасты написаны в девятеричной системе.

В табл. 018.5 соответствующие значения выделены подчеркиванием и полужирным начертанием.


383

Таблица 018.5

 

 

Возраст

 

В десятичной системе

В шестеричной системе

В семеричной системе

В восьмеричной системе

В девятеричной системе

 

 

 

 

 

 

 

10

 

 

 

 

11

 

 

 

 

12

 

10

10

14

13

12

11

11

15

14

13

12

12

20

15

14

13

13

21

16

15

14

14

22

20

 

15

15

 

21

 

16

16

 

22

 

17

17

 

23

 

18

18

 

24

 

20

19

 

25

 

21

20

32

26

24

22

21

33

зо

25

23

22

 

31

26

24

Дополнительное задание

1. Один мальчик написал: «Позавчера мне было 15 лет, а в будущем году мне исполнится 20». Может ли быть такое?

2. Один юноша написал: «Позавчера мне было 17 лет, а в будущем году мне исполнится 20». Может ли быть такое?

18.22   Троичная система счисления.

18.23   У каждого человека: 2 родителя; 2 бабушки и 2 дедушки;

4 прабабушки и 4 прадедушки; 8 прапрадедов и 8 прапрабабушек (всего — 16 человек). У каждого из этих шестнадцати человек также было по 16 прямых предков в «четвертом колене». Тогда искомое число равно 16 х 16 = 256.

(Количество прямых предков в «восьмом колене» будет меньше, чем 256, если среди них были, например, случаи вступления в брак троюродных братьев и сестер и т. п.)

384

18.24

Ошибка 1. После срубания у Змея Горыныча какого-то количества голов у него вырастало вдвое больше голов. Поэтому если срубить 32 головы, то должно отрасти 64, а не 63.

Ошибка 2. По той же причине, если срублено 63 головы, то должно отрасти 126, а не 128. Если же выросло 128 голов, то было срублено 64, а не 63.

Ошибка З. Восьмиразрядный Горыныч должен умереть сразу после срубания 128 (а не 256) голов, потому что число 256 в двоичном виде уже не поместится в разрядную сетку, и все восемь младших разрядов будут нулевыми. Если же Змей Горыныч все-таки умер после отрубания 256 голов, то это значит, что он был девятиразрядным, потому что в девяти разрядах число 256 в двоичном виде еще размещается, а 512 — нет.

18.25 Прежде всего можно установить, что так как Петров и Сидоров на заданный вопрос ответили по-разному, то они относятся к разным «партиям» (один — «шутник» , другой — «серьезный»).

Рассмотрим возможные ответы Иванова. Если он « серьезный», то на вопрос учителя он так и ответит (что он «серьезный»). Если же он «шутник» — то тогда он ответит, что он якобы «серьезный» . Получается, что в любом случае Иванов должен ответить: «Я — серьезный человек» .

Так как Петров сказал учителю то же самое, что ответил Иванов, то Петров относится к «партии серьезных » . Тогда Сидоров — « шутник » .

Можно также решить задачу методом допущений. Если допустить, что Петров — «шутник», а Сидоров — «серьезный», то из ответа первого следует, что Иванов на самом деле «шутник » , а из ответов второго — что он «серьезный» , чего быть не может.

Если же, наоборот, предположить, что Петров « серьезный» , а Сидоров — «шутник», то из ответа каждого из них следует одно и то же (что Иванов — «серьезный» Следовательно, Петров относится к «партии серьезных», а Сидоров «шутник » .

18.26 Из ответа третьего попугая следует, что он не может быть абсолютно честным (ведь такой попугай только один, и одновременно с ним второй попугай, сидящий рядом, честным быть не может), Значит, честным является либо первый, либо второй попугай. Но второй им быть не может (он не ответил, что является честным). Следовательно, абсолютно честным попугаем является первая птица. Тогда из высказывания этого (правдивого) попугая следует, что второй попугай — лжец. Остается, что третий попугай то лжет, то говорит правду.

18.27 Может. Первый раз обезьяна должна уронить один из двух уцелевших орехов с 4-го «яруса». Если он разбился, то она, используя оставшийся орех, проверит 2-й и, при необходимости, 3-й «ярус».

Если первый орех, брошенный с 4-го яруса, не разбился, то второй раз обезьяна уронит его с 7-го «яруса» . Если он разбился, то она, используя второй орех, проверит 5-й и 6-й «ярусы» . Если второй орех не разбился, то третий раз обезьяна уронит его с 9-го «яруса» . Если орех разбился, то она проверит оставшимся орехом 8-й «ярус», а если этот орех не разбился, то 10-й «ярус».

Вся схема испытаний показана на рис. 018.30. (Примечание: в кружочках указан искомый номер яруса на дереве.)

Можно также первое испытание провести на 5-м «ярусе». Если орех разбился, то обезьяна, используя оставшийся орех,

 

1-е испытание

Бросить орех № 1 с 4-го яруса

 

 

 

 

 

2-е испытание

Бросить орех N2 2 с 2-го яруса

да Нет

2-е испытание

Бросить орех № 1 с 7-го яруса

 

Нет      Нет


проверит 2-й и, при необходимости, 3-й и 4-й «ярусы». В противном случае второй раз она уронит первый орех с 7-го «яруса» . Если он разбился, то обезьяна проверит 6-й «ярус». Если же и при втором испытании (на 7-м «ярусе») орех не разбился, то дальнейшие действия умного животного должны быть аналогичными первому варианту решения задачи.

Возможна и модификация только что рассмотренного варианта, в котором второе испытание проводится не на 7-м, а на 8-м ярусе.

Дополнительное задание

1.  Составьте полную схему испытаний для второго варианта решения, аналогичную приведенной чуть выше.

2.  Сравните рассмотренные варианты по требуемому количеству испытаний (см. табл. 018.6).


Таблица 018.6

Искомый «ярус»

Количество испытаний до нахождения искомого яруса

1-й вариант решения

2-й вариант решения

2-й вариант решения

(модификация)

1

2

2

2

2

 

 

 

 

 

 

 

10

 

 

 

18.28 Проанализировав полученные сообщения, можно увидеть, что их начальные части совпадают только в семи первых импульсах (битах). Однако дальнейшее рассмотрение последовательностей порциями по 7 битов никакой закономерности не дает. А вот разбиение сообщений на полубайты (4 бита) дает следующее:

Х[1] = 0001 0000 1001 0101 0110 0001;

Х[2] = 0001 0001 0000 1001 0101 0101 0110 0001;

Х[3] = 0001 0001 0001 0000 1001 0101 0101 0101 0110 0001;

Дальнейший анализ удобнее проводить, переведя полубайты в десятичную систему счисления :

МЗ] = 1 1 1 0 9 5 5 5 6 1;

Хотя и в двоичном виде можно увидеть закономерность, о которой пойдет речь ниже.

Здесь уже ясно видна закономерность! Можно сказать, что сообщения представляют собой последовательность полубайтов вида (в десятичной системе):

                     п единиц             п пятерок

Дополнительное задание

Уже одно это говорит, что на планете живут разумные существа. Но какие числа обозначают полученные сообщения? Для ответа на этот вопрос вам придется вспомнить математику...

Для каждого из двух участников игры возможны три варианта хода:

1)  зачеркнуть две единицы;

2)  зачеркнуть две двойки;

З) зачеркнуть одну единицу и одну двойку.

Ситуация на доске после каждого из этих вариантов приведена в табл. 018.7.


Таблица 018.7

Вариант

Исчезнут цифры

Добавится цифра

Количество единиц

Количество двоек

1

1 1

2

Уменьшится на 2

Увеличится на 1

2

22

2

Не изменится

Уменьшится на 1

з

1 2

1

Не изменится

Уменьшится на 1

Из табл. 018.7 видно, что при любой последовательности ходов количество единиц как было четным, так им и останется (и когда-то обязательно станет равным О). Это означает, что на доске никогДа не может остаться одна единица, т. е. в любом случае в этой игре всегда выиграет второй участник.

Дополнительное задание

Подумайте над такой игрой: «На доске написаны 11 единиц и 11 двоек. За один ход разрешается стереть две любые цифры и, если они были одинаковыми, то написать двойку, а если разными единицу. Если оставшаяся на доске цифра — единица, то выиграл первый игрок, если двойка — второй» . Кто выиграет в этой игре?

18.30 Если проанализировать зависимость количества разломов R от количества долек шоколадки D (см. рис. 018.31), то можно установить, что R = D — 1.

Следовательно, в шоколадке 6 х 8 придется сделать 47 разломов, т. е. как бы ни действовали участники игры, при 48 дольках шоколадки последний разлом всегда сделает тот, кто начал (поэтому задача и названа «шуткой»).

18.31 Трехкратное повторение каждой двоичной цифры позволяет в случае ошибки выявить ее. Так, для примера, приведенного в задаче, если будет принято число 111 101 ООО ООО 111 111 111, то это означает, что при передаче второй цифры была допущена ошибка, однако принявший ее (человек или компьютер при специальной программе проверки) сможет прочесть правильный вариант, так как единица два раза была передана правильно. Если передавать каждую цифру только два раза, то этого достаточно, только чтобы выявить, была ли допущена ошибка при передаче. Но чтобы определить, в чем ошибка, двойного повторения мало, а трех — достаточно (дополнительные повторения уже ничего не дадут).

18.32 Слова этой песенки характеризуют суть векторного представления графической информации (в векторном представлении изображение представляется в виде набора простейших геометрических фигур).

18.33

1.  На дополнительной части клавиатуры имеются:

   14 отдельных квадратных клавиш;

   9 квадратов размером 2 х 2, образованных «обыкновенными» (квадратными) клавишами либо двумя такими клавишами и «двойной» клавишей;

   4 квадрата размером З х З, образованных «обыкновенными» (квадратными) клавишами или семью такими клавишами и «двойной» клавишей;

   1 квадрат размером 4 х 4 «обыкновенные» клавиши (его образуют клавиши с надписями 7, 8, 9, 4, 5, 6, 1, 2, З, О / Ins, . / Del, + и Enter .

      Всего       28 квадратов.

2.  Квадратов 31, треугольников 124, прямоугольников (в том числе квадратов) — 87.

з. 35.

4.   Треугольников — 78, правильных шестиугольников — 11, ромбов — 66.

5.   120.

18.34 Первая часть вопроса: так происходит, когда число 10 представляет собой двоичную запись десятичного числа 2. (Примечание: о двоичном числе 10 говорить «десять» нельзя. Надо говорить: «один, нуль». )

Вторая часть вопроса: это имеет место, когда мы смотрим на часы (цифра 2 соответствует 10 минутам).

18.35

1.  Римская цифра I (так как 1, V, Х, L, С, D, М — римские цифры; см. Приложение 1).

2.  33 (количество букв в алфавите).

З. Потому что это одна и та же клавиша на клавиатуре. Писатели, набиравшие текст на русском языке, тоже хотели написать «час Х», но переключать регистр было лень 9.

4.        


Windows 98 «в перевернутом виде» .

5.         Корзина (у Гюго — «корзина для хлама»).

6.         При использовании для записи чисел только цифр О, 1, 2 9 возможно применение девяти систем счисления (двоичной, троичной десятичной). В других случаях дополнительно используются также английские (латинские) буквы, например, в шестнадцатеричной системе счисления буквы А, в Р. А так как общее число английских букв — 26, то общее количество возможных различных систем счисления при этом будет равно 35.

7.         В переборе всех возможных вариантов.

8.         Пакет с битами (если с восемью, то это      байт) 9.

9.         Дежурный понял, что сообщение в виде числа 505 означает SOS — сигнал бедствия, и принял необходимые меры.

10.    Речь идет о букве «Е»: «пол-Е» («половина Е») — поле (столбец в таблице базы данных, в котором представлена информация о каком-то свойстве объектов).

11.    Речь идет об эмблемах фирм. У фирмы Apple эмблемой является изображение яблока (apple — по-английски «яблоко»).

12.    Незабудка.

13.    Они делают это, чтобы подобная запись адреса не могла быть использована спамерами (рассылающими рекламную информацию по множеству адресов — см. главу 15). При таком оформлении адрес не воспринимается специальными спамерскими программами, собирающими адреса электронной почты на итеЬ-страницах.

14.    Сокращение «УЖ» обозначает 2000 год:

    буква У — от английского слова year — «год»;

    Ж обозначает 2000 (приставка «кило», соответствующая числу 1000, сокращенно обозначается как «К» — вспомните сокращенное обозначение килобайта).

15.    В Государственном флаге России три цвета (белый, синий и красный), а в компьютере цветная точка на экране (пиксель) тоже получается путем смешения трех базовых цветов (правда, уже красного, зеленого и синего). Варианты правильных ответов:

1)  и там, и там используются три цвета;

2) 


и там, и там используются красный и синий цвета.

16.    Они все связаны со словом винчестер.

17.    9 слов: Начало, массивы, и, присвоил, метки, строка, ложь, истин, пока (если не считать их повторений).

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

19.    Речь идет об операционной системе Windows, хотя некоторые слова песни изменены (от англ. windows «окна»).

20.    Если проанализировать таблицы истинности этих операций (см. табл. 018.8 и 018.9), где 1 соответствует значению «Истина» , а О — значению «Ложь», то можно увидеть, что результат операции в первом случае представляет собой произведение значений отдельных условий, а во втором — сумму (без учета последней строки таблицы).

                                       Таблица 018.8                                               Таблица 018.9

Условие

1

Условие 2

Условие 1 И Условие 2

 

Условие

1

Условие 2

Условие 1 ИЛИ Условие 2

 

 

 

 

 

 

 

1

 

 

1

1

1

 

 

1

 

1

1

1

1

1

1

1

21.    Митрофанушка из комедии Д. И. Фонвизина «Недоросль» .

22.    Описанная в двух последних строчках песни ситуация связана с таким понятием программирования как «рекурсия» (см. главу 9), а точнее — «косвенная рекурсия» . Напомню, что рекурсией называется ситуация в программе, когда процедура или функция обращается к с самой себе. Когда это происходит не напрямую, а через другой объект (как это и происходит в песне), такую рекурсию называют «косвенной».

23.    В сказке «Репка». Помните «мышка взялась за кошку, кошка — за Жучку, Жучка — за внучку, внучка — за бабку, бабка — за дедку, дедка — за репку, и вытянули репку» .

24.    Незадачливый герой Г. Вицина пытался взять из стопки самый нижний горшок. А по принципу работы стека («последним пришел — первым вышел») из такой стопки настоятельно рекомендуется брать только верхний горшок.

25.   


Это клавиша Shift. Взгляните на нее: толстая и короткая стрелочка вверх (- -), нарисованная слева от названия этой клавиши, действительно очень похожа на домик с треугольной крышей.

26.    Надо (при включенном латинском регистре) нажать комбинацию клавиш Shift + 4, которая позволяет ввести символ « $ » .

27.    Иконку с надписью «Мой компьютер» 9.

28.    Чтобы защитить компьютер от кота, любящего улечься на клавиатуре.

29.    Вместо «запрещенных» кавычек можно использовать разрешенный для имен файлов и папок символ апострофа, повторяя его по два раза подряд.

30.    Курсив и курсор. Слово «курсив» означает «беглый почерк», а типографский шрифт «курсив» был разработан как подражание почерку знаменитого итальянского поэта Франческо Петрарки. А «курсор» — это тот самый значок, который мы немилосердно «гоняем» мышью по экрану монитора (английское слово cursor происходит от латинского cursorius «гонец», «скороход»).

31.    Обозначение ИДЗ традиционно соответствует «YVorld Wide Web», а аббревиатура W3C соответствует полному названию «World Wide Web Consortium» .

32.    Бит — элементарная единица измерения информации, представленной в двоичном виде (в двоичной системе счисления). А «трит» — это аналогичная единица при использовании троичной системы счисления (на такой системе была основана работа уникальной советской ЭВМ «Сетунь» , созданной в 1959 г. в вычислительном центре Московского государственного университета под руководством Н. П. Брусенцова).

33.    Окно.

34.    Изображение флага США означает, что включен режим ввода английских (латинских) букв. А при включении режима ввода русских букв появляется изображение трехцветного государственного флага России.

35.    Счеты.

36.    Легенда элемент диаграмм и графиков, указывающий обозначения рядов данных.

37.    Форт (английское название языка — Forth, что означает «четвертый»).

38.   


Так как знак ЕЕ обозначает число 1, можно предположить, что верхняя сплошная линия соответствует 1, а линии, состоящие из двух разделенных промежутком отрезков, всегда соответствуют О. Поскольку знаком = Фу Ши обозначал число З, средняя сплошная линия должна соответствовать числу 2 (1 + + 2 + О = З). Знаком Фу Ши обозначал число 6, тогда нижняя сплошная черта должна соответствовать числу 4 (О + 2 + + 4 = 6). Следовательно, знак Е-Е должен обозначать число 4

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

40.    В этих таблицах приведены символы и их коды ASCII, записанные в двоичном формате. Код 00100000 соответствует пробелу: он в последней таблице есть, но не виден, поскольку не имеет графического представления (это просто пустой промежуток).

41.    Матрешка.

42.    Он нажимает клавишу F1, которая вызывает на экран встроенную подсказку по программе.

43.    ЛОГОпед.

44.    Зацикливание .

45.    Да, когда речь идет о языке программирования. Хотя можно назвать и немало других случаев, когда от языка бывает польза,— например, согласно другой известной пословице: «Язык до Киева доведет» . . .

46.   


Слово «азбука» происходит от названий двух первых старославянских букв: «А» — аз (первоначально — азъ) и «Б» — буки (боуки). А слово «алфавит» родственно английскому слову «alphabet» и происходит от древнегреческого «ажраРлсо;», от названия первых двух греческих букв а (альфа) и р (бета в западноевропейских языках, или вита — название буквы, пришедшее в Древнюю Русь из средне- и новогреческого языка). Поэтому «исконно русским» является слово «азбука», а «алфавит» — заимствованное из иностранного языка.

47.    Зависание.

48.    «Бабушка надвое сказала» .

49.    Цифры расположены в так называемом «лексикографическом» порядке их названий (по алфавиту): восемь, два, девять, нуль

50.    «Отцы и дети» .

15—1523


Приложения

Приложение 1 . Из истории систем счисления

1. Вавилонская нумерация

В Древнем Вавилоне примерно 40 веков назад была создана особая система записи чисел. В вавилонских «клинописных» текстах (рис. П 1.1), числа от 1 до 59 записывались по десятичной системе.

4 = 10 « = 30

Рис. 111.1

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

До настоящей, «полноценной» позиционной системы счисления люди дошли не сразу. Одним из затруднений долго было отсутствие числа «нуль» и специального знака для него. Впервые знак нуля появился именно в рамках вавилонской системы (не позднее

Рис. гп.2 III века до нашей эры). Он выглядел так (рис. П 1.2).

После этих разъяснений нетрудно понять, что запись, показанная на рис. П 1.3, обозначает число 2 593 292 (12 • 603 + О • 60 2 + + 21 • 60 + 32).

Рис. гп.з

Дополнительное задание

Прочтите записанное по вавилонской системе число (рис. П 1.4).

Рис. 111.4

2. Система счисления майя

Очень близка к вавилонской система счисления, принятая в древней цивилизации индейцев майя, обитавших на территории Центральной Америки. Создание этой системы счисления относится к началу нашей эры. Если вавилонская система счисления имела комбинированный десятично-шестидесятеричный характер, то система майя была пятерично-двадцатеричной . Первые 19 чисел записывались в ней комбинированием черточки, обозначавшей пятерку, и точки (единицы) — см. рис. П 1.5. Но основную роль играла «искаженная» двадцатеричная система счисления. При записи числа его «цифры» подписывались одна под другой, причем старшей являлась верхняя цифра. Прилагательное «искаженная» здесь означает вот что: третье (после 1 и 20) ключевое число в системе майя равнялось не 20 • 20 = 20 2 , а 18 • 20 360; далее шли 18 • 20 2 , 18 • 20 3 , 18 • 20 4 . Существовало в системе майя и специальное обозначение для нуля, напоминающее полузакрытый глаз (рис. П 1.6).

           2         4          6        8

                                             2.22                          

      10           12           16           19

                                   Рис. 111.5                                                                        Рис. [11.6

На рис. П 1.7 приведены несколько примеров записи чисел в системе майя:

1 • 20 + 0 = 20;

19 360 + 13 20 + 13 7 113; 10 360 + 0 • 20 + 7 з 607.

Рис. 111.7

Обратите внимание на правильность написания названий систем: пятеричная, двадцатеричная, шестнадцатеричная и т. п. (через «е» , а не через «и»).

Дополнительное задание

Прочтите число, записанное по системе майя (рис. П1.8).

Рис. гп.8

З. Буквенная цифирь

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

Числа от 1 до 9 при этом записывали так (рис. П 1.9). Числа же от 11 до 19 выглядели так, как показано на рис. П 1.10.

Обратите внимание, что числа от 11 до 19 записывали так же, как и называли их: «одиннадцать» «один на десять», . . . , « девятнадцать» — «девять на десять», т. е. цифру единиц ставили до цифры десятков, а знак титло ставился только один — над всем числом. Одно из подтверждений этого — часы на колокольне Суздальского Кремля (см. фото на рис. П 1.11).

Удивительно, но это древнее название символа созвучно современному названию — «тильда» (вы, конечно, знаете о таком символе на клавиатуре). Автор фотографии — С. Г. Григорьев.

Соответственно, десятки на Руси обозначались, как показано на рис. П 1.12, а сотни — как показано на рис. П 1.13.

 

20

30

40

50

60

70

80

90

 

 

 

 

 

 

 

 

 

Рис. 111.12

 

200

зоо

400

500

600

700

800

900

 

 

 

 

 

 

 

 

 

Рис. пЯ.13

Благодаря использованию в древнерусской числовой системе целых 27 цифр запись даже трехзначных чисел была достаточно короткой (как вы, очевидно, знаете, чем меньше цифр используется в системе счисления, тем длиннее запись чисел в ней, вспомните представление чисел в двоичной системе). Например, число 544 в славянской записи выглядело так, как показано на рис. П1.14.

фмд

Рис. П1.14

Тысячи в славянской записи обозначались теми же буквами с «титлами» , что и первые девять цифр, но слева внизу ставился знак « » (рис. П 1.15). Например, число 1135 записывалось, как показано на рис. П 1.16.

- 7000

а ле

 

Рис. (11.15

 

Рис. П1.1б

Десятки тысяч назывались «тьмы»; до XVI в. их обозначали, обводя знаки единиц кружками. Например, на рис. П 1.17 показано, как записывались числа 10 ООО, 20 ООО и 50 ООО соответственно. Отсюда и пошло название «тьма народу» , т. е. очен.ъ много народу (вспомните также выражение «тьма-тьмущая»

«очень много», « бесчисленное множество » ).     Рис. пЯ.17

 

398

10 «тем» (множественное число от слова «тьма»), или 100 ООО, было единицей высшего разряда. Ее называли «легион». Миллионы же назывались «леодрами». До XVI в. их обозначали, обводя знаки еди-

Рис. гп.18

ниц кружками из лучей или запятых. Так, число 2 • 106 обозначалось, как показано на рис. П 1.18.

Позже, в XVI—XVII вв., для записи десятков и сотен тысяч вместо кружочков (сплошных или из лучей) стал использоваться тысячный знак « » , который записывался перед числом десятков тысяч или сотен тысяч.

Самая большая из величин, имеющих свое обозначение в древнерусском исчислении, называлась «колода» и равнялась 1050 . Считалось, что «боле сего несть человеческому уму разумевати».

В целом описанный способ записи чисел можно рассматривать как зачатки позиционной системы, так как в нем для обозначения единиц разных разрядов применялись одни и те же символы, к которым добавлялись специальные знаки для определения значения разряда. В России буквенная цифирь активно использовалась до начала XVII в.: в гражданской азбуке Петра I (1710 г.) буквенные цифры были даны одновременно с арабскими в разделе «Число церковное и арифметическое». Да и теперь иногда при перечислении разделов вместо числовой или цифровой их нумерации используют буквенную — а), б), в) и т. д., хотя строго установленного числового значения современные буквы уже, конечно, не имеют (впрочем, например, в текстовом редакторе Microsoft Word списки с использованием букв отнесены к «нумерованным»!).

В заключение отметим, что системы счисления, для записи чисел в которых используются буквы некоторого алфавита, называют «алфавитными» [З]. К числу таких систем кроме буквенной цифири («славянская алфавитная система») относились также ионийская (греческая), финикийская и другие.

Дополнительное задание

1.               Запишите в славянской алфавитной системе десятичные числа: 15; 83; 516; 557; 4 818; 5 642; 70 241 (без использования кружочков).

2.               На рис. П 1.19 изображен так называемый «бородовой знак» , введенный Петром после его возвращения из знаменитого путешествия в Европу. Петр I ввел новый порядок, по которому бояре обязаны были брить бороды, а те, кто не хотел подвергаться такому «позору», должны были заплатить большую пошлину и носить при себе особый знак об уплате этой пошлины

«бородовой знак» (аналог современной квитан-                  Рис. 111.19

ции Э). Надпись на знаке на рис. П 1.19 в первой строке под ге рбом означает не «аще», как может показаться на первый взгляд, а год изготовления знака. Определите его.

4. Римские цифры

Считается, что «римские цифры» были изобретены не самими римлянами, а их историческими предшественниками — этрусками. Римляне лишь заимствовали эти цифры за пять веков до н. э. , усовершенствовали их и правила их использования и дали им свое имя. От римлян «римские цифры» перешли к другим чародам Европы и были в употреблении до XIII—XV вв., когда на смену им пришли арабские цифры.

В системе римских цифр — всего лишь семь знаков: 1, V, Х, L, С, D, М, (Иногда как отдельные цифры указывают еще П, Ш, IV, VI и т. п., но это уже сочетания цифр.)

Значения римских цифр: — один (1), V — пять (5), Х -— десять (10), 1., —пятьдесят (50), С — сто (100), D —пятьсот (500), М — тысяча (1000). Эти значения можно представить как степени числа 10 нулевую (1), первую (10), вторую (100) и третью (1000) (т. е. присутствует элемент десятичной системы счисления) или как произведение трех первых степеней на 5 (т. е. имеется и элемент пятеричной системы счисления): I = 10 0 = 1, х = 10 1 = 10, с = 10 2 = 100, м = 10 3 = 1000; 100 х 5 = 1 х 5 = 5; L= 10 1 х 5 = 10 х 5 = 50; D = 10 2 х 5= 100 х 5 = 500. Значения, кратные пяти (5, 50, 500), можно также определять как «половинки» значений ближайшей большей цифры: V = 10 / 2 = 5 и т. п.

Происхождение обозначений римских цифр толкуют по-разному. Наиболее правдоподобны следующие разъяснения: первые три знака это наследие счета по пальцам: I один палец и т. д.; V — два разведенных пальца как «представители» всех пяти пальцев кисти (или кисть руки с отставленным большим пальцем); Х — две «пятерки» (см. рис. П 1.20); С — начальная буква слова centum — «сто»; М — начальная буква слова mille —

Рис.

400

«тысяча». Есть и другие толкования. Менее других ясно происхождение знаков для 50 (L) и 500 (D).

Римские цифры имеют лишь абсолютное значение и не несут позиционной значимости: — это всегда 1, V — всегда 5, Х всегда 10 и т. д. Основной порядок расположения цифр в записи чисел — от больших по значению к меньшим; при этом возможны «пропуски» любой старшей цифры, любой младшей, любых и даже всех срединных. Примеры: все цифры без пропусков MDCLXVI (1666); только цифры со значением степеней 10

пуском срединных цифр — МИ (1001) и т. п.

Общее значение определяется путем сложения абсолютных значений цифр: MDCLXVI = 1000 + 500 + 100 + 50 + 10 + 5 + 1 = 1666. При этом, в отличие от записи арабскими цифрами, нельзя просто читать значения цифр: так, простое считывание цифр приведенного числа дало бы следующую фразу: «тысяча пятьсот сто пятьдесят десять пять один» (сравните с ним арабскую запись: 1666 «тысяча шестьсот шестьдесят шесть»).

Описанный нисходящий порядок цифр может иметь два вида нарушений :

1)                       цифры со значением степени 10 (т. е. 1, Х, С и М) могут повторяться, но не более трех раз: MMMDCCCLXXXVIII (3888); при этом «половинные» цифры (V, L, D) повторяться не могут, так как двукратное повторение каждой из них дало бы то, что обозначается следующей старшей цифрой;

2)                       те же цифры со значением степени 10 (кроме М) могут предшествовать ближайшей или последующей старшей цифре, но не третьей по порядку: IV, IX (но не IL); XL, ХС (но не XD и не ХМ). При этом вступает в действие принцип вычитания значение меньшей цифры вычитается из значения большей: IV = 5 — 1 = 4; IX = 10 — 1 = 9 и т. п. Если подряд идут одинаковые или хотя бы и разные старшие цифры, то младшая может размещаться только перед последней: XXW, ХМХ, ХХМХ (24, 29, 39) и т. п. Причем «половинная» цифра не может помещаться перед ближайшей старшей, так как возникшее при этом выражение означало бы то же, что обозначает сама эта «половинная» цифра (например VX = 5, т. е. V, и т. п.).

Это логически обоснованные правила и запрещения, но есть и чисто условные, например нельзя младшую цифру ставить перед более чем второй по порядку старшей, скажем перед 1., и С или Х перед D и М. Скажем, запись П, должна была бы означать 49 (50 — 1), но 49 записывается иначе: XLIX, т. е. из 50 сначала надо вычесть 10, а потом прибавить те же 10 и только теперь вычесть 1. Таким же способом записывается число 99: не IC, а XCIX,

т. е. (100- 10) + (10- 1),— таков уж «синтаксис» этих цифр...

Дополнительное задание

1.               Запишите римскими цифрами числа 999 и 1987.

2.               Определите, каким арабским числам соответствуют римские числа CDXLIV и MCMLXXIV.

5. Арабские цифры

Известно, что цифры, которыми мы пользуемся для записи чисел, называются «арабскими». Но изобретены они были в Индии! Почему же тогда их так называют? Это произошло потому, что широкое распространение в мире (в частности, в Европе) эти цифры получили благодаря арабам и их математическим сочинениям. Да и само слово «цифра» — арабского происхождения: sifr значит «нуль». В Европу индийские (арабские) цифры стали проникать в X—XI вв., а широкое распространение получили со второй половины XV в. На рис. П 1 .21 приводится таблица, иллюстрирующая эволюцию написания цифр 0—9 к современному виду (на рисунке приведен вариант из первого издания книги [11] (1908 г.) с сохранением орфографии того времени).

Приложение 2. Азбука Морзе

Азбука Морзе (она названа по имени ее изобретателя — Сэмюэля Морзе) — это условный код для передачи сообщений по телеграфу, радио или с помощью световой сигнализации. Знаки азбуки Морзе соответствуют буквам латинского и русского алфавита, знакам препинания и цифрам; имеются в ней и некоторые специальные знаки. В состав всех знаков входят два элемента (сигнала), различающиеся продолжительностью времени их передачи (в соотношении примерно 1:3), условно — «малый» и «большой» . В учебных азбуках они представлены как точка и тире; в телеграфной записи — как дефис и тире; при приеме на слух и в световой сигнализации — как короткий и длинный звуковой/световой сигнал.

Знаки азбуки Морзе различаются комбинацией (количеством и порядком следования) этих элементов: буквы содержат от одного до четырех элементов (только буква «э» состоит из пяти элементов), все цифры пятиэлементные; знаки препинания шестиэлементные; дополнительные знаки могут иметь пять, шесть и более элементов. Русские буквы (31 знак: без буквы «ё» , а буквы «ь» и «ъ» считаются за один знак) кодируются следующим образом (см. табл. П2.1, где буквы и их коды сгруппированы по количеству элементов в коде).


1691 rre←0H0←、pミさ Sミ

二(色



・①ミト①9ミdeミ003d①9W09 ミ

ミ0ゝ 2 、ミ0辷、

・ 08 Iき8 ROHOト

H①Hミh00きミ

03記H記ト記h①e

・X・d011

 0

XH要Ve産

09ed記

一一                     き←ミd H23

XミH ①do 一←e09

                                                             3ミ                                                                     80r0ミh

姿hOト008ミ出eHt① 90r0ミh                                                   き9de

記Wミ0e一 ミ要BHC①H90r0ミh

・ミd記32H記①ミ BHt①H80r0ミh


Таблица [72.1

 

 

х

 

 

 

 

 

и

 

 

 

 

 

л

 

н

 

Б

 

м

 

 

с

 

я

 

 

 

п

 

 

 

 

 

 

 

ц

 

в

 

з

 

 

 

й

 

д

 

ы

 

о

щ

 

Э

 

 

 

 

 

 

Знаки цифр (пятиэлементные комбинации) построены так (см. табл. П2.2): в цифрах 1—5 последовательно нарастает (в начале кода) количество точек — от 1 до 5 — и, соответственно, уменьшается количество тире — от 4 до О, а в цифрах 6—0, наоборот, увеличивается количество тире — от 1 до 5 — и, соответственно, уменьшается количество точек — от 4 до О.

Таблица [12.2

1

 

6

 

2

 

7

 

З

 

8

 

4

 

9

 

5

 

О

Знаки препинания (шестиэлементные комбинации) приведены в табл. П2.З.

Таблица П2.З

запятая

 

кавычки »

 

точка

 

скобки ( )

 

точка с запятой

восклицательный знак

двоеточие

 

дробная черта ( / )

вопросительный знак

 

 

 

информатика

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

Приложение З. Луи Брайль и его шрифт

Первым человеком, который разработал систему кодирования букв и чье имя воспринимается скорее как название азбуки, а не как собственно имя, был вовсе не Морзе. Этой чести удостоился слепой подросток, появившийся на свет 18 годами позже Сэмюэля Морзе. О его жизни известно немногое, но и это заслуживает внимания.

Луи Брайль (Louis Braille) родился в 1809 году во Франции, в местечке Кувре, в 40 км восточнее Парижа. Его отец был шорником (изготовителем упряжи для лошадей). Когда Луи было три года в этом возрасте малышу еще не следовало играть в отцовской мастерской он случайно уколол глаз шилом. В рану попала инфекция, заражение распространилось на второй глаз, и мальчик полностью ослеп. Казалось, он был обречен остаться неграмотным и влачить нищенское существование (обычная участь слепого в те времена). Однако у мальчика обнаружился живой ум и страстное желание учиться. Благодаря поддержке деревенского священника и школьного учителя он вначале посещал сельскую школу вместе с другими детьми, а в возрасте 10 лет его отправили в Королевский институт для слепых в Париж.

Одно из главных препятствий в обучении слепого человека — его неспособность читать. Основатель парижского института для слепых Валентин Ойи придумал систему рельефных букв, которые можно было читать, касаясь их пальцами. Однако на практике с этой системой было очень трудно работать, поэтому книги, напечатанные таким способом, успехом не пользовались.

Ойи не был слепым и оказался заложником привычных представлений о буквах. Он, например, считал, что буква А это А и не что иное, и поэтому она должна походить на А даже на ощупь. Ойи не пришло в голову, что для слепых людей более удобным может оказаться код, существенно отличающийся от печатных букв!

Идея такого кода пришла с неожиданной стороны. Капитан французской армии Шарль Барбье разработал в 1819 году систему кодирования, которую он назвал &riture постпе «ночное письмо». В ней применялись выпуклые точки и тире на плотной бумаге, и предлагалась она солдатам как средство беззвучной

 

405

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

Недостатком системы Барбье была ее сложность. Барбье решил кодировать с помощью сочетаний точек и тире не буквы, а звуки, поэтому для шифрования некоторых слов требовалось очень много кодов. Такая система еще как-то оправдывала себя при передаче коротких сообщений, но была совершенно непригодна для длинных текстов, не говоря уже о книгах.

Луи Брайль познакомился с системой Барбье в возрасте 12 лет. Система рельефных точек пришлась ему по душе, так как позволяла не только читать с помощью пальцев, но и писать: ученик, пользуясь картоном и специальным пером, делал в классе заметки, которые затем мог прочитать дома. Совершенствуя в течение трех лет эту систему, Луи Брайль разработал собственный шрифт (Брайлю было тогда 15 лет!), основы которого используются и поныне.

В шрифте Брайля символы письменного языка — буквы, цифры и знаки препинания — кодируются комбинациями от одной до шести выпуклых точек, расположенных в ячейке 2 х З. Точки в такой ячейке нумеруются с 1 до 6 (рис. ПЗ.1). Для выдавливания точек используются специальные машинки и станки.

Конечно, в обычной книге невозможно привести текст с рельефными буквами, поэтому воспользуемся общепринятой системой, применяемой для отображения символов Брайля на страницах обычных книг и газет. В каждой ячейке будем показывать все шесть точек: крупные точки будут соответствовать выпуклым, а мелкие — плоским. Например, в символе, показанном на рис. ПЗ.2, точки 1, З и 5 — выпуклые, а точки 2, 4 и 6 — плоские.

                                 Рис. пз.1                                                                        Рис. ПЗ.2

Можно показать, что система Брайля содержит 64 (2 6 ) различных кода. Самое же интересное, что при таком небольшом (по сравнению с 256 кодами, как правило, применяемыми в компьютере), в системе Брайля предусмотрена возможность кодирования и прописных букв, и цифр, и знаков препинания. Имеется даже возможность «записи» знака ударения.

Вот как выглядит при записи в системе Брайля имя основоположника этой системы (Louis):

Рис. ПЗ.З

Многие годы система Брайля применялась только в парижском институте для слепых, но позже она постепенно распространилась очень широко.

В наши дни у людей, лишенных зрения, появилась возможность знакомиться с письменными источниками информации «на слух» — путем прослушивания аудиокниг. Но для слепоглухонемых людей шрифт Брайля и сегодня остается единственным, бесценным способом чтения, а значит, и единственным, бесценным источником информации. А для компьютеров, которыми пользуются слепые люди, были изобретены работающие по системе Брайля механические «дисплеи» (в виде выдвигающихся стерженьков), а также специальные «брайлевские» клавиатуры.

Приложение 4. Русская семафорная азбука

Существующую на флоте систему передачи информации на основе русской семафорной азбуки разработал в 1895 году вице-адмирал С. О. Макаров. Эта азбука составлена в соответствии с русским алфавитом и включает 29 буквенных и несколько служебных знаков (см. рис. П4.1—П4.З). Она не содержит цифр и знаков препинания: их передача производится словами, по буквам, например, цифра 7 передается словом «семь», а знак «,» — словом «запятая» .

Каждой букве и служебному знаку в семафорной азбуке соответствует определенное положение рук с флажками. Семафорное сообщение состоит из слов, составленных из букв, изображаемых соответствующим положением флажков.

Передача информации семафором производится сигнальщиками с помощью флажков размером 30 х 35 см. Цвет ткани флажков зависит от времени суток — например, в темное время используются флажки с тканью светлого тона (желтый, белый), а в светлое — с тканью темного тона (красный, черный). При отсутствии флажков моряки «семафорят» своими бескозырками. Средняя скорость передачи информации обученным сигнальщиком при помощи флажкового семафора составляет 60—80 знаков в минуту.


407

41 1 г

              ж           

и,й     

ги.1

информап

Щ

п4.2

 

409

Служебные и Дополнительные знаки

Знак Знак        Знак вызова ответа повторения

(ошибки)

Знак Знак Знак ожидания разделительный вопроса

                                                      Знак

                            Знак                                                                      невозможности

 ИБГ

Передвиньтесь в правую

Передвиньтесь в левую

от меня (принимающего)

от меня (принимающего)

сторону)

сторону)

               Поднимитесь                                      Спуститесь

                             выше                                                                  ниже

П4.з


Ответы на дополнительные задания

Глава 1

1.5 Надо разогнуть 6-е, 17-е, 38-е и 49-е звенья.

1.13

Доказательство сделанного утверждения Общий вес всех монет на правой чашке:

1 пи + 2т2 + 4тз + 8nt4 + 16m5.

Общий вес всех монет на левой чашке:

(1)

31m,

(2)

где пи, пи, nt5 — вес одной монеты, соответственно, из первого, второго пятого мешков, а т — вес настоящей монеты. Значение (2) можно записать так:

      1 т + 2m+ 4m+ 8m+ 16m.                                                 (3)

Тогда показание весов будет равно:

А = (1 т + 2m + 4m + 8m + 16m) —

— (1 пи + 2nt2 + 4тз + 8nt4 + 16m5), или

А— 1(m— пи) + 2(m— п») + 4(m— тз) + 8(m— т4)+ 16(m— то.

Обозначив значения в скобках, соответственно, как П, ..., П, мы можем записать:

    А — 16r5 + 4 + 4r3+ 2742 + 1 П.                                          (4)

Поскольку значения равны О или 1, мы можем сказать, что десятичному значению А соответствует двоичное вида  где цифра rt О, если i номер мешка с настоящими монетами, и = 1, если i — номер мешка с фальшивыми монетами. Иными словами, правая часть выражения (4) представляет собой развернутую форму записи числа в двоичной системе счисления.

Это означает, что по двоичному значению показания весов А можно получить решение задачи.

411

Для иллюстрации приведем таблицу:

Значения А

Двоичная запись значения А

Мешки с фальшивыми монетами

 

000000

Нет

1

000001

1-й

2

000010

2-й

з

000011

2-й и 1-й

4

000100

3-й

5

000101

3-й и 1-й

6

000110

3-й и 2-й

7

000111

3-й, 2-й и 1-й

 

 

 

Решение заДачи для шести мешков

Такая задача решается аналогично задаче с пятью мешками, но с той разницей, что на левой чашке размещается 31 монета из 6-го мешка. Если в этом мешке монеты настоящие, то решение совпадает с рассмотренным ранее. Если же в 6-м мешке монеты фальшивые, то показание весов будет отрицательным (перевесит правая чашка). Тогда для нахождения номеров мешков с фальшивыми монетами необходимо абсолютную величину показания весов представить в шестиразрядном двоичном виде, а затем полученное двоичное число инвертировать (все нули заменить на единицы, а единицы на нули).

1.14 Закодируем номера монет в троичной системе счисления (см. табл. Д 1):

Таблица Ш

Номер монеты

1

2

з

4

5

 

7

8

9

Условный номер монеты

О

1

2

з

4

5

 

7

8

Троичное представление

оо

01

02

10

11

12

20

21

22

Данную задачу можно решить за два взвешивания. Для первого взвешивания рассмотрим левый разряд троичных чисел: 1 в нем будет означать, что монету нужно положить на левую чашку весов, 2 — на правую чашку, а О — что монета не участвует во взвешивании. Затем аналогичные действия определим для второго разряда.

Запишем результаты каждого взвешивания в соответствующий разряд троичного числа (1 — перевесила левая чашка, 2 —

правая, О — весы в равновесии). Тогда полученное троичное число однозначно определяет номер фальшивой монеты.

Проверьте сказанное самостоятельно на примере какой-то монеты.

1.16

1.                В задаче Иосифа Флавия при любых значениях п при К = 2 всегДа последним останется человек с нечетным порядковым номером (так как в двоичной записи этого номера последней цифрой является 1).

2.                Кот и мыши

1.                       Если начать счет с белой мыши по кругу (по часовой стрелке или против), то последней будет съедена та серая мышь, которая при этом будет одиннадцатой по счету.

2.                       Чтобы последней съесть белую мышку, кот должен при счете по кругу по часовой стрелке или против часовой стрелки начать счет с третьей (считая в соответствующем направлении) мыши от белой.

1.17    Первый игрок, начинающий игру, проигрывает в ситуации, когда в кучках имеются 1, 4 и 5 предметов (проверьте это сами).

1.18    Пусть всего в шоколадке имеется а «столбцов» и Ь «строк», причем слева от отмеченной дольки находится с 1 столбцов, а справа с2 (с 1 + с2 + 1 = а), снизу — d1 строк, сверху

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

Примечание. Сказанное, правда, не означает, что все другие размеры шоколадки приводят к проигрышу начинающего игру, — см. например, шоколадку, изображенную на рис. 1.25, у которой оба «размера» — четные числа.

Глава 2

2,4 Если обозначить места размещения монет А, В и С (см. рис. 02.5) числами 1, 2 и З соответственно, то все варианты решения рассматриваемой задачи можно записать в виде таблицы

(см. табл. Д2), где команда А 1 означает перемещение монеты А на место 1 и т. д.

Таблица

N9.№ варианта

 

ействие

1

2

з

1

 

 

 

2

 

 

 

З

в-»1

 

 

4

 

 

 

5

 

 

 

6

 

 

 

Общее число вариантов (6) равно количеству размещений трех предметов по три (З х 2 х 1).

2.11 Решение также находится из «распутанного клубка пуговиц и нитей». Нужно следить лишь за тем, чтобы кони разного цвета не оказались в этом клубке соседями. Если круговое движение (по часовой стрелке) начинает белый конь al, то решение будет таким: kal-b3, КаЗ-с2, КсЗ-Ь-аЗ, Кс1-а2-сЗ, КЬЗ-с1-а2, Кс2-а1-ЬЗ, КаЗ-с2-а1, КсЗ-Ь-аЗ, Ка2-сЗ, КЬЗ-С1.

З. Тот факт, что все числа (все элементы массива) уже стали отсортированными, можно зафиксировать следующим образом: если на каком-то очередном проходе массива не было обменов карточек (элементов массива), то задача решена.

Глава 4

4.9

Вопрос 1. Можно. В таком случае все равно необходимо попытаться разделить имеющие монеты на три кучки, состоящие из одинакового числа монет. Если такой возможности нет, то нужно поступить так.

Количество монет в первой группе должно составлять треть от общего их числа:

k(1) = п div З, (1) где п — общее число монет, div —- целочисленное деление.

Оставшиеся монеты необходимо разделить пополам, т. е. число монет во второй группе равно:


k(2) = (п - ка» div 2, а в третьей:

(2)

(3) Можно доказать, что при разделении п монет в соответствии с формулами (1)—(3) как минимум две такие группы будут состоять из одинакового количества монет и что количество монет в этих группах будет различаться не более чем на 1. Доказательство следует из табл. ДЗ.

Таблица ДЗ

Рассчитываемые значения

Варианты значения п

Примечание

п=Зт

п=Зт—2

 

 

 

 

По формуле (1)

 

 

 

 

 

 

 

 

По формуле (2)

 

 

 

 

По формуле (З)

Примечание. Значение п может соответствовать одному из трех случаев: быть кратным трем (п = Зт, где т = 1, 2, З, ...); быть на 1 меньше, чем в первом случае; быть меньше на 2.


Сравнив на весах кучки с одинаковым количеством монет, можно выделить ту из них, в которой находится фальшивая монета. Повторив применительно к ней те же действия с разделением на три кучки, можно найти аналогичную кучку с меньшим числом монет и т. д. — в результате мы придем к задаче 4.8 или к задаче нахождения фальшивой монеты среди двух одинаковых по виду монет.

Вопрос 2. Пусть К — натуральное число, удовлетворяющее неравенствам 3 к п, З < п. Покажем, что К — это и есть искомое число взвешиваний.

Прежде всего проиллюстрируем, что при помощи К взвешиваний всегда можно определить фальшивую монету. Разделим наши монеты на три группы так, чтобы в двух равных группах было по з к 1 (или меньше) монет, а количество монет в туетьей группе было бы не больше 3k (это возможно, так как п З ). Положив на чашки весов две группы, состоящие из равного числа монет, мы определим, в какой из трех групп содержится фальшивая монета. Таким образом, после первого взвешивания мы выделим группу из 3 k 1 монет, среди которых содержится фальшивая (если окажется, что фальшивая монета содержится в группе, содержащей меньше 3 k монет, то мы можем дополнить эту группу монет произвольными монетами до 1 ). При каждом последующем взвешивании будем аналогично делить монеты на три группы и определять, в какой из них находится искомая монета. Следовательно, после К взвешиваний мы придем к группе из одной монеты, т. е. выделим фальшивую монету.


Теперь осталось показать, что есть минимальное количество взвешиваний, с помощью которых всегда можно выделить фальшивую монету, т. е. что при любых способах взвешивания результаты взвешиваний могут сложиться таким неблагоприятным для нас образом, что после К — 1 взвешиваний фальшивая монета еще не будет выделена.


При каждом взвешивании монеты раскладываются на три группы: попавшие на одну чашку, попавшие на другую чашку и не попавшие ни на одну из чашек. Если на чашки весов было положено одинаковое число монет и весы уравновесились, то фальшивая монета заведомо находится в группе монет, не попавших при взвешивании ни на одну из чашек. Если одна из чашек перетянет (при равном количестве монет на чашках), то фальшивая монета заведомо находится на второй чашке. Наконец, если на чашки весов было положено разное число монет, то в случае, когда перетянула чашка, где монет больше, фальшивая монета может оказаться в любой из трех групп, и такое взвешивание вообще не дает нам никаких сведений о местонахождении фальшивой монеты. Пусть теперь при произвольно производимых взвешиваниях результат взвешивания каждый раз оказывается наиболее неблагоприятным, т. е. фальшивая монета каждый раз оказывается в той из трех групп, которая содержит наибольшее число монет. Тогда при каждом взвешивании количество монет группы, содержащей фальшивую монету, убывает не более чем в З раза (ибо при делении некоторого числа монет на три группы всегда по крайней мере одна из трех групп содержит не менее трети от общего числа монет). Поэтому после К — 1 взвешиваний количество монет в группе, содержащей фальшивую монету, останется не меньше чем n/3 k 1 . И так как п > З , то после К — 1 взвешиваний фальшивая монета еще не будет выделена.

Примечание. Можно коротко записать ответ задачи в такой форме: минимальное число взвешиваний, необходимых для выделения фальшивой монеты из группы в п монет, есть — 0,5)) + 1, где INT — функция, возвращающая целую

часть числа.

4.10 Последней тройкой чисел будет следующая: 26, 26 и 49. При

разбиении на группы с количеством монет 25, 25 и 51 задачу решить нельзя.

Глава 5

5.6

1.               Оказывается, что если носильщик есть только один, то задачу решить тоже можно и даже более эффективно (с какой точки зрения — определите самостоятельно, сравнив решение с приведенными ранее). Преимущества обеспечивает тот факт, что маршРУТ замкнутый, т. е. все участники перехода до его начала и в его конце находятся в одном и том же пункте.

Алгоритм действий путешественника (П) и носильщика (Н) приведен в табл. Д4.


Таблица Д4

 

1-й день

2-й день

3-й день

4-й день

5-й день

6-й день

Н

Вышел из исходного пункта

К концу дня у него осталось У2

Отдал путешественнику.

С оставшимся   возвращается назад

 

 

Вышел из конечного (исходного) пункта

К концу дня у него осталось У2

Отдал У1 путешественнику. С оставшимся У1 идет в конечный пункт

П

Вышел из исходного пункта ста.

К концу дня у него осталось Уз

Получил У1 от Н.

Вышел с У4. К концу дня у него осталось Уз

Вышел

К концу дня у него осталось

Вышел cV2• К концу дня У него осталось

Вышел

К концу дня у него осталось Ио

Получил

Вышел cV1•

К концу дня у него осталось Уо

2.               Идея решения задачи для такого случая: надо предварительно создать запас еды и воды в конце маршрута пятого дня (в точке F — см. рис. Д 1). Но каким должен быть этот запас?

              1              2             з             4             5             6

в

Рис. Дя

Можно рассуждать так. Путешественник самостоятельно дойдет до точки Е. Туда носильщик должен будет доставить еду и воду. Тогда, находясь в точке Е, носильщик должен:  добраться до точки Е (требуется У1);

   обеспечить путешественника едой и водой для перехода до точки F (требуется У1);

   вернуться вместе с путешественником в точку F (требуется У1).

Итак, выйдя из точки F в точку Е, носильщик должен иметь с собой запас еды Уз. Кроме того, путешественнику и носильщику предстоит переход в конечный пункт — точку G. Для этого потребуется еще У2. Значит, в момент перед переходом носильщика из F в точку Е в точке F следует иметь V5. Это можно обеспечить следующим образом. Так как носильщик, придя в точку F из точки (7, сможет иметь с собой максимум Уз (V1 будет им израсходован), то V2 надо доставить в точку F заблаговременно. Такую задачу решить несложно.


Остается только синхронизировать действия носильщика и путешественника, чтобы последний не страдал от голода и жажды © в точке Е. Так как на создание запаса в точке F требуется два дня и еще два дня нужны для перехода носильщика в точку Е, то он должен начать работать в первый же день путешествия.

З. Сначала носильщик (или путешественник) должен заблаговременно создать запас еды V2 в точке G (см. рис. Д2). Решение этой задачи не должно вызвать у читателя затруднений. Последующие действия (считая дни с 1-го) описаны в табл. Д5.

Таблица Д5

 

1-й день

2-й день

3-й день

4-й день

5-й день

6-й день

7-й день

Н

Вышел из точки

К концу дня у него осталось

Отдал Vl путешественни-

С оставшимся У1 возвращается назад

 

Вышел из точки

навстречу П. К концу дня у него осталось

Вышел из точки (7 с Уз навстречу П.

К концу дня, когда он встретился с П в точке Р, у него осталось

Отдал У1 путешественни-

С оставшимся У1 идет в точку

К концу дня у него осталось

Взял У1 из запаса в точке G.

Вышел

К концу дня у него осталось Уо

П

Вышел из точки AcV4. К концу дня у него осталось

Получил

Vl ОТ НО-

СИЛЬЩИка.

Вышел

К концу дня у него осталось Уз

Вышел с V3•

К концу дня у него осталось У2

Вышел

К концу дня у него осталось

Вышел

К концу дня в точке F у него осталось

Получил от носильщика.

Вышел cV1•

К концу дня у него осталось

Взял У1 из запаса в точке G.

Вышел cVl.

К концу дня у него осталось Уо

4.                Сначала путешественник должен заблаговременно создать запас еды V1 в точке В, а носильщик запас в точке G (см. рис. ДЗ). На это уйдет два дня. Решение этой задачи также не должно вызвать у читателя затруднений. Последующие действия (считая дни с 1-го) описаны в табл. Дб.

Таблица Дб

 

1-й день

2-й день

3-й день

4-й день

5-й день

6-й день

день

н

 

 

 

Вышел из точки I с V4 навстречу

п. К концу дня у него осталось

Вышел из точки G с Уз навстречу

п.

К концу дня в точке F у него осталось V2• Отдал путешественнику осталось

Вышел cV1•

К концу дня у него осталось Vo

Используя запас у1, сделанный в точке G, идет в конечный пункт

П

Вышел из точки А

К концу дня у него осталось

Взял запас получилось в сумме V4

Вышел cV4. К концу дня у него осталось Уз

Вышел

К концу дня У него осталось У2

Вышел

К концу дня у него осталось

Вышел с Vl• К концу дня в точке F у него осталось Vo.

Взял у носильщика

Вышел cV1•

К концу дня У него осталось Vo

Используя запас V1, сделанный в точке G, идет в конечный пункт

                      1             2             з             4             5             6             7

Рис. ДЗ

5.                В первый день путешественник и носильщик выходят навстречу друг другу и в конце дня в том месте, где они остановились (соответственно в пунктах В и I — см. рис. Д4), они оставляют запас на 2 дня (V2) и с возвращаются обратно, Эта операция требует 2 дня. Затем они, частично используя сделанные запасы, создают запас в пунктах С и G (в пунктах В и I остается по И). На это уйдет 4 дня (а всего — 6 дней). Далее путешественник отправляется один, чтобы без возвращений пройти весь восьмидневный маршрут. Он идет первый день и берет в точке В оставленный запас (у него — У4). Идет еще один день до пункта С и опять забирает запас (у него по-прежнему Щ). Следующие 4 дня он идет с имеющимся у него запасом до пункта G. Чтобы затем дойти до финиша, он использует запасы в пунктах G и I.


              1             2             з             4             5             6             7              8

Рис. да

Глава 18

18.19 Пусть груз, который надо взвесить, весит А кг. Это число можно представить в троичной системе следующим образом:

А = (апап-1...щао)з,

А = ап • З п + ап-1 где коэффициенты ао, щ, ап могут принимать значения О, 1 или 2 (как вы, очевидно, знаете, это так называемая «развернутая» запись числа А).

Можно доказать, что 2 • З — З . Введем «отрицательную цифру 1» и обозначим ее как 1. Тогда последнее равенство можно записать в виде: 2 • з т = + 1 • з т . А это означает, что любое целое число А можно изобразить в троичной системе счисления с помощью цифр О, 1 и 1 (заменив в его развернутой записи цифры 2 на соответствующую разность):

А = bm • З т + bm—1


 

420

где каждый из коэффициентов Ьт, Ьт-1 , . . . , может быть равным О, 1 или 1 . Например, число 100, которое обычным способом запи-

сывается в троичной системе как 10201, во втором варианте записи будет иметь вид 11101, поскольку 100 = 3 4 + 3 3 — 3 2 + 1.

Следовательно, чтобы уравновесить груз в А граммов , нужно положить его на первую чашу весов, а гирю в 1 грамм поставить на вторую чашу, если bo = 1, либо на первую чашу, если bo

(а если = О, то гирю в 1 грамм мы вообще не используем). Далее, гиря весом в З грамма ставится на вторую чашу, если = 1, либо на первую, если = 1, и т. д. Легко понять, что, расставив гири по такому принципу, мы уравновесим груз А.

Поясню сказанное на примере. Предположим, что у нас имеется груз в 200 граммов. Переводя 200 в троичную запись, мы получим:

З

З

З

З

66

66

22

21

о

7

200

198

2

                              1    6      2

1

Следовательно, 20010 = 211023, или, в развернутой записи:

Учитывая правило, описанное выше, мы можем сделать следующий вывод: чтобы уравновесить груз в 200 граммов, положенный на одну какую-то чашу весов, нужно на ту же чашу положить гири в 1 и 81 грамм, а на противоположную гири в З, 9, 27 и 243 грамма.

В заключение отметим, что троичную систему счисления, использующую цифры 1, О и 1, называют «уравновешенной», или «симметричной» системой [З]. Интересно, что такая система счисления применялась в ЭВМ «Сетунь» , разработанной в 1958 г. в Московском государственном университете им. М. В. Ломоносова под руководством Николая Петровича Брусенцова, который в момент написания данной книги (2009 г.) являлся сотрудником этого университета.

В задаче 18.19 и в задании для самостоятельной работы речь шла о взвешивании грузов весом 1 кг и более. Здесь же мы будем рассматривать более легкие грузы и гири массой 1, З, 9 и т. д. граммов. Понятно, что суть решения задачи от этого не меняется.

Сетунь — название речки, протекающей неподалеку от МГУ.

18.21

1.  Может. Возможные варианты приведены в табл. Д 7,

Таблица Д7

Фактический воз аст

Основание системы счисления, в кото ой записаны воз асты

11 и 12 лет

6

12 и 14 лет

7

13 и 16 лет

8

2.  Может. Возможные варианты представлены в табл. Д8.

Таблица ДВ

Фактический воз аст

Основание системы счисления, в кото ой записаны воз асты

15 и 16 лет

8

16 и 18 лет

9

17 и 20 лет

10

18.27

1.  Полная схема испытаний при втором варианте решения:

Примечание. В кружочках указан искомый номер яруса на дереве.

422

2.  Сравнение вариантов иллюстрирует табл. Д9.

Таблица Д9

Искомый ярус

Число испытаний до нахождения искомого яруса

1-й вариант решения

2-й вариант решения

2-й вариант решения

(модификация)

1

2

2

2

2

з

з

З

з

з

4

4

4

з

4

4

5

4

з

з

6

4

з

4

7

4

4

4

8

4

4

з

9

4

4

4

10

4

4

4

18.28 Запишем Х[п] в виде:

     Х[п] = 11...1 х      + 9 х 10 п+ 2 + 55...5 х 10 2 + 61 -

                = ас- 1)/9 х         9 х 10 п+ 2 + 5(10 п - 1) х 102 /9 + 61 =

                    = (102п+4 - 14 х                   + 49)/9 = [(10 П + 2

Это означает, что последовательности сообщений подчиняются закону:

        Х[1] = 331 2 ,              = 3331 2 ,              = 33331 2

Так что на планете т Кита живут не просто разумные, а очень разумные существа. Ответы к Приложению 1

1. ((24 60 + 2) • 60 + 32) 60 +42 = 5 193 162.

2. 9(18 204 ) +6(18 203 )+ 14(18 •  • 20) +15 • 20+ 1 — 26 889 781 (это самое большое число, обнаруженное в памятниках культуры майя).

3.1. 15-      83-ПГ; 516- ФМ; 557- ФНЗ,

4818 дип; 5642 -,ехмв; 70241 -,ФОМЛ

3.2, На «бородовом знаке» указан 1705-й год.

4.1. 999 = СМХС1Х (т. е. 1000 - 100 + 100 - 10 + 10 - 1); 1987 = MCMDXXXVII.

4.2. CDXLIV = (D - С) + (Ь - Х) + (V - 1) = 400 + 40 + 4 — 444; MCMLXXIV = М + (М — С) + + (Х + Х) + (V — 1) =1000 + 900 + 50 + 20 + 1974.


Литература

1.  Абдуллаев И. Математические задачи с микрокалькулятором. М.: Просвещение, 1990.

2.  Абрамов СА. Математические построения в программировании. М.: Наука, 1978.

З. Андреева Е.В., Фалина И.Н. Информатика: Системы счисления и компьютерная арифметика. М.: Лаборатория Базовых Знаний, 1999.

4.        Аршинов М.Н., СаДовский Л.Е. Коды и математика. М.: Наука, 1983.

5.        Богомолова О.Б. Логические задачи. М.: БИНОМ, Лаборатория знаний, 2005.

6.        Выгодский МЯ. Справочник по элементарной математике. М.: Наука, 1999.

7.        Гарднер М. Математические головоломки и развлечения. М.: мир, 1999.

8.        Дагене ВЛ., Григас ГЖ., Аугутис К.Ф. 100 задач по программированию. М.: Просвещение, 1993.

9.        ДоморяД А.П. Математические игры и развлечения. М.: Гос. изд-во физ.-мат. лит-ры, 1961.

10.   Журавлев А.П. Языковые игры на компьютере. М.: Просвещение, 1988.

11.   Игнатьев Е.И. В царстве смекалки. Ростов н/Д.: Ростовское книжное изд-во, 1995.

12.   «Информатика»: Приложение к газете «Первое сентября» (2003—2008 гг.), в том числе статьи:

1)  Дмитриев Я. Играем в прятки, или Что такое стеганография / / Информатика. 2004. .N2 35;

2)  Заславская О.Ю. Логические парадоксы и софизмы / / Информатика. 2004. N2 8;

З) Ярцева О.В. Шифрование текста с помощью табличек / / Информатика. 2005. 22.

13.   «Квант»: научно-популярный физико-математический журнал (1970—1995 гг.).

14.   Кобринский Н.Е., Пекелис ВД. Быстрее мысли. М.: Молодая гвардия, 1963.

424

15.   КорДемский БА. Математическая смекалка. М.: Юнисам, мдс, 1994.

16.   Леман Иоханнес. Увлекательная математика. М.: Знание, 1985.

17.   Ллойд С. Математическая мозаика. М.: Мир, 1980.

18.   Оре О. Приглашение в теорию чисел. М.: Наука, 1980.

19.   Очков В.Ф., Пухначев Ю.В. 120 советов начинающему программисту. М.: Энергоатомиздат, 1991.

20.   Перельман Я.И. Занимательная математика. М.: Издательство Русанова, 1994.

21.   ПетцольД Ч. Код. М.: Издательско-торговый дом «Русская редакция», 2001.

22.   Трахтенброт БА. Алгоритмы и вычислительные автоматы.

М.: Советское радио, 1974.

23.   Фомин СВ. Системы счисления. М.: Наука, 1987.