Задание множества точек на плоскости - Prolog
Формулировка задачи:
Доброго времени суток. Подскажите, пожалуйста, как задать случайное кол-во случайных точек в пространстве? И как потом выбрать самые крайние точки по часовой стрелке?
Решение задачи: «Задание множества точек на плоскости»
textual
Листинг программы
include("points.txt"). write_el([OX,OY]):- write(OX+" "+OY). write_list(_,[]). write_list(0,_). write_list(COUNT,[X|T]):- COUNTNEW:=COUNT-1, write_el(X),nl, write_list(COUNTNEW,T). ?-findall([OX,OY], (point(OX,OY);fail),FirstList), write_list(24,FirstList).
Объяснение кода листинга программы
- Включается файл
points.txt
. - Определяется процедура write_el, которая принимает два аргумента OX и OY и выводит их на экран через пробел.
- Определяется процедура write_list, которая принимает два аргумента COUNT и LIST. Если COUNT равно 0, то выводится пустой список. Если COUNT равно 1, то выводится первый элемент списка LIST. Если COUNT больше 1, то выводится первый элемент списка LIST, а затем вызывается процедура write_list с аргументами COUNT-1 и TAIL списка LIST.
- Определяется процедура findall, которая принимает два аргумента COLS и ROW и ищет все точки в файле
points.txt
. Если точка найдена, она добавляется в список FirstList. Если точка не найдена, вызывается процедура fail. Когда все точки найдены, вызывается процедура write_list с аргументами 24 и FirstList.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д