RETURN

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

Mesh: 'подсчет количества беспорядков МС = Sqrs(15) FOR I = О ТО 13 Temp% = Sqrs(I) FOR J = I + 1 TO 14

IF Temp% > Sqrs(J) THEN МС = МС + 1 NEXT NEXT RETURN

Как и в предыдущих случаях приведенная программа нужна для отладки алгоритма игры как этап перехода к более сложной программе SQRS.BAS, приведенной в "Приложениях". Текст программы содержит краткие комментарии. Программа использует текстовую псевдографику в графическом режиме (оказывается возможно и такое). Эта программа позволяет играть не только в 15 фишек, но и в 8, 24, 35, 48, 63, 80 и даже 99. Размер коробочки выбирается играющим на начальной стадии игры. Кроме того, цифры на фишках сделаны цветными, что вообще говоря делает эту игру более трудной (в данном случае цвет отвлекает от решения задачи). И наконец, в случае успешного решения задачи программа играет туш от 1 до 8 раз (на 2 меньше длины стороны коробочки).

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

5.4. РАССТАВЬ 8 ФЕРЗЕЙ

При постановке этой задачи используются предметы, которыми играют в шахматы, но она ничем более не имеет отношения к этой древней игре. Требуется расставить на шахматной доске 8 ферзей таким образом, чтобы каждый из них располагался не на битом поле. Как известно, простота формулировки задачи не всегда обещает легкость ее решения. Подобрать один из вариантов решения при достаточной усидчивости не так уж сложно. Гораздо труднее получить все решения. Но мы займемся этим позднее, а пока перейдем к разработке алгоритма и программы.

Для математической модели этой игры можно использовать двумерный массив (8 строк и 8 столбцов). Элемент массива со значением 1 обозначает занятую ферзем клетку шахматной доски, а со значением 0 — свободную. Поскольку мы имеем возможность не только записывать информацию в ЗУ адаптера дисплея, но и читать ее, то в отличие от предыдущих задач моделью объекта игры будет служить его изображение на дисплее. Упрощения ради пока выберем текстовый режим, выведем на