Самый большой периметр треугольника - Prolog

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Необходимо написать правило, находящее три точки, образующие треугольник с максимальным периметром. Как это осуществитть и с чего начать? Нужно осуществить не тупым наглым перебором вcех сторон.

Решение задачи: «Самый большой периметр треугольника»

textual
Листинг программы
max( X, Y, X ):–  X >= Y.
max( X, Y, Y ):–  X < Y.
 
maxlist( [ X ], X ).
maxlist( [ X, Y | TAIL ], MAX ) :–
maxlist( [ Y | TAIL ], MAXTAIL ),
max( X, MAXTAIL, MAX ).

Объяснение кода листинга программы

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

  1. max( X, Y, X ) - этот шаблон проверяет, является ли X наибольшим значением среди трех переданных параметров. Если это так, он возвращает X. Если нет, он вызывает себя снова, передавая два меньших значения в качестве новых параметров.
  2. max( X, Y, Y ) - этот шаблон проверяет, является ли Y наибольшим значением среди трех переданных параметров. Если это так, он возвращает Y. Если нет, он вызывает себя снова, передавая два меньших значения в качестве новых параметров. Затем применяется maxlist, который является оберточным шаблоном, чтобы рекурсивно применять max ко всем элементам списка.
  3. maxlist( [ X ], X ) - если список содержит только один элемент X, maxlist возвращает X.
  4. maxlist( [ X, Y | TAIL ], MAX ) - если список содержит больше одного элемента, maxlist рекурсивно применяет себя к оставшейся части списка TAIL, используя MAX как текущий максимум. Затем он вызывает max с X и MAX в качестве параметров, чтобы обновить MAX в случае, если X больше текущего максимума. В итоге, maxlist возвращает максимальную длину стороны треугольника.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы