Выбрать главу

Для размещения тяжелых грузовиков вы можете случайным образом выбирать целое число в интервале длины, большей 4. Если оно примет значения 1, 2, 3 или 4, то вы помещаете грузовик в соответствующий ряд, а если оно примет большее значение, то препятствия нет. Чем больше выбранный исходный интервал, тем меньше шансов для появления грузовика. Подберите этот параметр экспериментально.

Игра 12.

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

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

Вы выбираете две шашки, скажем a и b, и соединяете их одной из операций:

a + b, ab, a * b, a : b.

Сложение возможно всегда. Что касается вычитания, то с ним дела обстоят так же, если договориться, что мы всегда вычитаем меньшее из большего (это относится к правильному наименованию чисел, или — что то же — к взятию той из двух операций ab или ba, которая дает положительный результат). Заметим, однако, что если a = b, то знак «−» выбирать нельзя.

a * b можно вычислять только тогда, когда ни один из двух сомножителей не равен 1.

a : b ориентировано (как и вычитание). Число b не должно быть равно 1. Остаток при делении должен быть нулевым.

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

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

7 * 75 = 525 8 3 1 10;

вы выводите на экран

1 3 7 8 10 75 найдено: 525.

Вы можете выбрать новую шашку и скомбинировать ее с предыдущим результатом

525 − 8 = 517,

Вы снова получите промежуточный результат.

Вы можете выбрать две шашки и скомбинировать их:

3 * 7 = 21.

Тогда вы получите два промежуточных результата:

7 * 75 = 525; 3 * 7 = 21

Если у вас два промежуточных результата, то появляется много возможностей:

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

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

Но вы можете также выбрать новую шашку и скомбинировать ее с одним из двух промежуточных результатов. Вы снова получите два промежуточных результата.

Таким образом, вы получаете то, что называется конечным автоматом. Есть четыре возможных состояния:

начальное состояние, состояние ОДИН, в котором у вас есть один (и притом единственный) промежуточный результат.

состояние ДВА, в котором у вас есть два промежуточных результата,

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

Т2: выбрать случайным образом две шашки и соединить их случайным образом выбранным знаком, чтобы получить промежуточный результат;

Т1: случайным образом выбрать шашку и соединить ее случайным знаком с промежуточным результатом;

Т0: соединить два промежуточных результата между собой случайным образом выбранным знаком.

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

Вы теперь знаете все. Конечные автоматы часто встречаются в программировании. Запомните этот пример, он имеет очень широкую область применения…

Игра 13.

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