Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 [ 69 ] 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 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 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261


ГРАБИТЕЛЬ: Целится; стреляет; ПРОМАХНУЛСЯ; целится; стреляет; ПРОМАХНУЛСЯ.

ШЕРИФ: Стреляет; ПРОМАХНУЛСЯ; идет к окну; целится; стреляет; ПРОМАХНУЛСЯ.

ГРАБИТЕЛЬ: Целится; стреляет; ПРОМАХНУЛСЯ; целится; стреляет; ПРОМАХНУЛСЯ; целится; стреляет; ШЕРИФ ЛЕГКО РАНЕН. ШЕРИФ: Целится; стреляет; ПОПАДАЕТ В ГРАБИТЕЛЯ.

ГРАБИТЕЛЬ: Роняет РЕВОЛЬВЕР; грабитель умирает.

ШЕРИФ: Кладет револьвер в кобуру; идет к столу; берет стакан правой рукой (пустой); берет стакан из правой руки в левую руку; берет бутылку правой рукой; наливает; ставит бутылку на стол; берет стакан из левой руки в правую руку; пьет из стакана; берет cfaKan из правой руки в левую руку; берет бутылку правой рукой; наливает; ставит бутылку на стол; берет стакан из левой руки в правую руку; пьет из стакана; ставит стакан на стол; идет в угол; берет деньги правой рукой; идет к двери; выходит; закрывает дверь. ЗАНАВЕС.

Сценарий #2. (Револьвер в правой руке; деньги в левой руке; стакан на столе; бутылка на столе; кобура на грабителе; револьвер шерифа в правой руке шерифа; кобура шерифа на шерифе.)

ГРАБИТЕЛЬ: (Грабитель за окном.) Идет к двери; открывает дверь; входит; закрывает дверь; идет в угол; кладет деньги в углу; идет к окну; кладет револьвер у окна; прислоняется к окну и смотрит; идет в угол; считает деньги; идет к столу; берет стакан правой рукой (пустой); берет стакан из правой руки в левую руку; берет бутылку правой рукой; наливает; ставит бутылку на стол; берет стакан из левой руки в правую руку; пьет из стакана; ставит стакан на стол; берет бутылку в правую руку; наливает; идет в угол; ставит бутылку в угол; идет к окну; берет револьвер в правую руку; проверяет револьвер; кладет револьвер в кобуру; идет к столу; берет стакан в правую руку; пьет из стакана; идет к окну; ставит стакан у окна.

ШЕРИФ: (Шериф за окном.) Видит грабителя (грабитель видит шерифа); идет к двери.

ГРАБИТЕЛЬ: Берет револьвер из кобуры правой рукой; проверяет револьвер; идет к двери; проверяет револьвер; кладет револьвер у двери.

ШЕРИФ: Открывает двери; видит грабителя (грабитель видит шерифа); входит; идет к окну.



ГРАБИТЕЛЬ: Берет револьвер правой рукой. ШЕРИФ: Идет к столу.

ГРАБИТЕЛЬ: Целится; стреляет; ПРОМАХНУЛСЯ; прицеливается; стреляет; ПОПАЛ

В ШЕРИФА; задул ствол; кладет револьвер в кобуру. ШЕРИФ: Роняет револьвер; шериф умер.

ГРАБИТЕЛЬ: Идет в угол; берет деньги в правую руку; идет к двери; выходит; закрывает дверь. ЗАНАВЕС.

Внимательный читатель этих сценариев обнаружит представленную здесь в высшей степени напряженную драму. Программа старательно следит за перемещением каждого актера, за тем, что он держит в руках, и т. д. Действия актеров случайные, регулировались определенными вероятностями; вероятности глупых действий возрастали в зависимости от того, как много актер пил и как часто промахивался стрелок. Читатель в состоянии сделать вывод о дополнительных свойствах программы, изучая образцы сценариев. Конечно, даже лучшие сценарии переписывают прежде, чем их поставят, и в особенности когда неопытный писатель готовит начальный набросок. Здесь сценарии точно такие, какие действительно использовались для показа.

Сценарий Ф1. Музыка.

СП Грабитель всматривается через окно хижины.

КП Лицо грабителя.

СП Грабитель входит в лачугу.

КП Грабитель видит бутылку виски на столе.

КП Шериф за хижиной.

СП Грабитель видит шерифа.

ДП Шериф в дверях за плечом грабителя, оба хватаются за револьверы.

СП Шериф вытаскивает револьвер.

ДП Стреляет. Попадает в грабителя.

СП Шериф поднимает мешки с деньгами.

СП Грабитель шатается.

СП Грабитель умирает. Падает поперек стола после попытки сделать последний выстрел в шерифа.

СП шериф идет к двери с деньгами.

СП Тело грабителя все еще лежит поперек стола. Камера катится назад. (Смех)

Сценарий #2. Музыка.

КП окно. Появляется грабитель.

СП Грабитель входит в хижину с двумя мешками денег. СП грабитель кладет мешки денег на бочку. КП Грабитель видит виски на столе.

СП Грабитель наливает виски за столом. Идет считать деньги. Смеется. СП Шериф за хижиной. СП Вид из окна.

СП Грабитель видит шерифа через окно.

ДП Шериф входит в хижину. Вытаскивает. Стреляет.

КП Шериф, корчится от выстрела.

СП/2 Шериф идет, шатаясь к столу, чтобы выпить . . . падает мертвый. СП Грабитель покидает хижину с мешками денег*

[Замечание. КП - "крупный план", СП - "средний план" и т. д. Приведенные сценарии любезно предоставлены Томасом Г. Вулфом (Thomas Н. Wolf) - продюсером телепередачи, впервые предложившим идею написания компьютером небольшой пьесы, а также

* © 1962 by Columbia Broadcasting System, Inc. All Rights Reserved. Used by permission. Дополнительную информацию можно найти в книге J. Е. Pfeiffer, The Thinking Machine (New York: J. B. Lippincott, 1962).



Дугласу Т. Россу (Douglas Т. Ross) и Гаррисону Р. Морсу (Harrison R. Morse), создавшими программу.]

Летом 1952 года Кристофер Стрейч (Christopher Strachey) использовал техническое обеспечение генератора случайного числа Ferranti Mark 1 для составления следующего письма.

Милая голубушка

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

Ваш грустящий м. У. к.

[Encounter 3 (1954), 4, 25-31; другой пример появился в статье на Electronic Computers в 64 издании Pears Cyclopedin (London, 1955), 190-191.]

У читателя, несомненно, есть множество идей, как научить компьютер литературному творчеству. Это и является целью данного упражнения.

► 6. [40] Просмотрите библиотеку программ каждого установленного в вашей организации компьютера и замените плохие генераторы случайных чисел хорошими. Попробуйте избежать сильных потрясений от того, что вы обнаружите.

► 7. [М.0] Решительный программист формирует свои файлы, используя линейную конгруэнтную последовательность (Хп) с периодом 2, которая генерируется (1) для m = 2. Он берет наибольшие значащие двоичные разряды [ЛГп/2J и добавляет их в свои данные с исключающим "или", но держит в секрете параметры а, с и ЛГо-

Покажите, что это не очень надежная схема, и придумайте метод нахождения множителя а и первой разности Xi - ЛГо за разумное приемлемое время, задав только значения [An/2J для О < п < 150.

8. [М15] Предложите хороший метод выполнения проверки, хорошо ли работают линейные конгруэнтные генераторы.

9. [НМ32] Пусть ЛГо, Al, ... - числа, полученные программой ran.array после того, как ran.start инициализирует процесс генерирования с начальным значением s. Рассмотрим полиномы

Pn{z) = A„+62г -f Xn+eiz + + А„г" -f Xn+ssz + + Xn+e4Z + А„+бз.

a) Докажите, что Pn{z) = z•~" (по модулю 2 и z°° -f z + 1) для некоторого показателя h{s).

b) Выразите h{s} в терминах двоичного представления s.

c) Докажите, что если Xq, Х{, ... - последовательность чисел, полученных той же программой при начальном значении s ф s, то X+k = п+к ("о модулю 2) для О < А; < 100 только тогда, когда \п - п\ > 2° - 1.

10. [22] Преобразуйте программы ran.array и ran.start на языке С в программы на языке FORTRAN 77 генерирования той же последовательности чисел.

► 11. [М25] Предположим, что арифметика с плавающей точкой на числах, имеющих тип double, правильно выполняет округление в смысле раздела 4.2.2 (т. е. точно тогда, когда значения должным образом ограничены). Преобразуйте программы ran.array и ran.start на языке С в сходные программы, которые выдают случайные дроби с двойной точностью в [0.. 1) вместо целых чисел с 30-ю двоичными разрядами.

► 12. [М21] Какой генератор случайных чисел будет подходящим для мини-компьютера, который имеет арифметику только для целых чисел в области [-32768 .. 32767]?



0 1 2 3 4 5 6 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 [ 69 ] 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 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 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261