Костёр 1989-04, страница 45отцепи (отцепляется один, последний вагон, или, точнее, последний прицепленный вагон); — прицепи (прицепляется один вагон); переведи (перевод стрелки). Последняя команда вызвала самое бурное обсуждение. Она изменяет направление движения. Если локомотив стоял так, как показано на рис. 1, и получил команду ВПЕРЕД, то в результате ее выполнения получится ситуация рис. 2. Если же в исходной ситуации он получил сначала команду ПЕРЕВЕДИ, а затем — команду ВПЕРЕД, то в результате будет положение, изображенное на рис. 3. Переводить стрелку можно, находясь в любом положении,— слева от тупика, справа от тупика и в тупике. Одной командой ПЕРЕВЕДИ можно перевести только одну стрелку, ближайшую на пути следования поезда. Петя * начертил начальное положение состава (заметьте положение стрелок). Вот информация (рис. 4). А тем — конечное положение (рис. 5). / \ —. шшшшт РИС.1 X,ZZ Г —------ рис.2 / zsz рис.5 pnci / \ э рис.5 Теперь осталось только записать алгоритм! Но Машинист предложил: Пусть это сделают наши читатели! И вот им добрый со-чтобы не запутаться, пе реводя стрелки в уме, постройте тупик и три стрелки из спичек, а вместо вагонов возьмите, например, шашки. Тогда каждую команду алгоритма можно будет выполнить на таком самодельном «компьютере». Задание 1. Составьте алгоритм разворота из команд, записанных Петей. — Ну и денек. Трудный и жаркий,— пожаловался Петя, когда друзья вернулись, наконец, в городок роботов. — Пить хочешь?— сочувственно спросил Кукарача. Угу! Пойдем к моей доброй знакомой Переливашке. Она угостит нас отличным квасом. Переливашка была дома. В нарядном платочке она хлопотала со своей многочисленной посудой. На столе в посудой, комнате стояли три ведра: красное с надписью: «8 литров», зеленое пятилитровое и голубое емкостью в три литра. 8-литровое ведро было наполнено квасом до краев. Два других ведра — пустые. — Угощайтесь,— предложила хозяйка. Восьми литров Пете многовато,— сказал Кукарача.— Да и мне тоже. Давайте разольем из красного ведра квас так, чтобы и ему, и мне досталось поровну — по 4 литра. Ну что ж, попробуйте! Петя пробурчал недовольно: — Легко сказать: «Попробуйте!» Как же это сделать, если на ведрах нет разметки объемов? Но ведь теперь ты умеешь составлять разные алгоритмы. Вот и напиши алгоритм переливания из 8-литрового ведра в пятилитровое с помощью еще одного ведра — трехлитрового. Результатом такого переливания должно стать положение, при котором в красном и зеленом ведре окажется по четыре литра кваса. При этом разрешается либо полностью выливать квас из ведра (если есть для этого мес- I г з I г з то в одном из двух других ведер), либо выливать часть, но так, чтобы доверху залить наполняемое ведро. Осторожно, не пролейте ни капли. Кукарача пошутил: Весьма ценный алгоритм для засушливых и пустынных районов! Петя задумался: — Предлагаю обозначения для команд алгоритма. Если надо переливать из красного ведра в зеленое, я это запишу: кр. —зел. (305) а из зеленого в голубое зел. —гол. (332) В скобках справа написаны пояснения: сколько литров после выполнения команды остается в сосудах: красном (где исходно 8 литров, а после выполнения первой команды стало 3 литра), голубом (вначале 0 и осталось 0) и зеленом (стало 5). Эти пояснения, называемые комментариями, не важны для робота-исполнителя, но очень удобны для человека, который составляет или проверяет алгоритм. Затем Петя быстро набросал алгоритм. Довольные Кук и Кукарача пошли, унося с собою два ведра,— красное и зеленое. В каждом по четыре литра вкусного кваса. А в блокноте юнкора осталась запись для редакции «Костра»: Задание 2. Составьте алгоритм для исполнителя Переливашки, который, как и Петя, сможет разделить объем в 8 литров на две равные части, имея неградуированные сосуды 8 литров, 5 литров и 3 литра. Л. ДУВАНОВ, Е. ПЕРВИН Оформил В. Шаронов 39 РИС.6 |