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

• для показа состояния модели используется цветная псевдографика, сосуды изображены синим цветом и по форме напоминают стаканы, а жидкость — красным (похоже не на воду, а на вино!),

• слева около дна для каждого из сосудов синими цифрами показана емкость, а справа около поверхности жидкости (если сосуд не пустой) красными цифрами — объем налитой жидкости,

• для выбора сосуда около середины дна показывается стрелка (концом вниз для выливания и концом вверх для наливания), перебор вариантов производится клавишей Space, а исполнение — клавишей Enter,

• при переборе вариантов программа автоматически исключает неприемлемые (выливание из пустого сосуда, наливание в полный сосуд и переливание в тот же самый сосуд),

• при переливании показывается изображение трубочки, соединяющей сосуды, а объем жидкости в сосудах изменяется ступенчато по 0,5 л в секунду,

• у правого края кадра показывается номер очередного переливания.

В заключение этого занятия для тех, кому трудно будет решить задачу наименьшим количеством переливаний, приводится подсказка из 7 пар цифр (1-2, 2-3, 3-1, 2-3, 1-2, 2-3, 3-1).

5.3. ИГРА В 15

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

• в плоскую квадратную коробочку, плотно вмеицаюидую 16 квадратных фишек (4 ряда по 4 штуки), укладывается 15 пронумерованных фишек,

• свободное место может использоваться для передвижения фишек,

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

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

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