Процедура работает достаточно быстро для того, чтобы в случае неудачи иметь возможность испытать наличие решения для
— решение, если оно существует,
— приближение о точностью до единицы, если это возможно.
Эта программа терпит неудачу крайне редко.
В выпуске от 8 марта 1984 года следующий розыгрыш не был найден ни кандидатами, ни Бертраном, ни кем- либо из присутствующих:
50 10 10 5 4 2
На моем микрокомпьютере нужно 18 с, чтобы обнаружить, что эта задача не имеет решения, а затем еще 5 с, чтобы получить
50 ? 10 = 40 , 40 * 5 = 200, 10 ? 2 = 8,
200 ? 8 = 192, 192 * 4 = 768.
Для задачи
9 7 6 4 3 1
4 * 9 = 36, 36 + 1 = 37, 37 * 7 = 259,
259 + 6 = 265, 265 * 3 = 795.
Наконец,
100 50 8 5 4 2
За менее чем 2 с получаем
50 ? 4 = 46 , 46 * 2 = 92, 92 * 8 = 736,
100 + 5 = 105 , 736 ? 105 = 631.
Я уже предлагал вам следующий пример:
100 75 50 25 10 10.
Для
Компьютер сообщает мне
75/25 = 3,
50 ? 3 = 47,
47 * 10 = 470,
470 ? 100 = 370.
Это уже интересно, потому что это — совершенно не то решение, которое я собирался искать.
Чтобы найти 369, нужно образовать число, не кратное 5, — чего нельзя сделать с помощью какой-либо из трех операций +, ?, *, сохраняющих кратность пяти. Следовательно, нужно использовать деление. Вот решение:
50/10 = 5,
5 * 75 = 375,
375 ? 10 = 365,
100/25 = 4,
365 + 4 = 369.
Обе представленные здесь программы не позволяют получить это решение. Действительно, оно записывается в виде
(50/10) * 75 + 100/25 ? 10.
А число 368? Вы нашли для него решение? Я не сумел. Но Жак Бейгбеде сообщил мне, что он получил его делением на 25…
10 * 100= 1000,
1000 ? 75 = 925,
925 * 10 = 9250,
9250 ? 50 = 9200,
9200/25 = 368.
7. Обо всем понемногу
Головоломка 31.
Программисты обманываются, поскольку они не берут на себя труд прояснить различные ситуации.
В строке 200 мы знаем, что цепочка
В строке 300 цепочка
Ваша программа должна сохранять симметричную роль обеих цепочек. Не начинайте проверять результат пробега цепочки
Возьмем общую ситуацию:
обе части совпадают с точностью до пробелов.
ВЫПОЛНЯТЬ
продвинуть
продвинуть
ЕСЛИ таких нет в
r := ИСТИНА;
КОНЧЕНО КОНЕЦ_ЕСЛИ;
ЕСЛИ таких нет в a ИЛИ таких нет в b ТО
r := ЛОЖЬ;
КОНЧЕНО КОНЕЦ_ЕСЛИ;
ЕСЛИ
КОНЧЕНО КОНЕЦ_ЕСЛИ;
ВЕРНУТЬСЯ
Эта программа совершенно симметрична относительно
Головоломка 33.