2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Пролог, элементарная задача, помогите.
Сообщение20.10.2007, 17:00 
Не первый год программирую на C, C++, bash и по мере надобности (сдача всяких лабораторок) на Delphi. В курсе "Искуственный интеллект в САПР" необходимо написать некую программу на Прологе - не могу, не укладывается все это в голове. Совершенно непонятный синтаксис, работа с "переменными", "предикаты",какие-то хитрые взаимоотношения между "мама(Наташа, Саша)".. лучше три скрина на С чем две строчки на Прологе - понятнее. Помогите кто-нить с программулькой. Задание следующее: Пусть в массиве (видимо, в Прологе это список) содержаться результаты измерения температуры втечении декабря месяца. Определить самый холодный день декабря (судя по всему имеется ввиду число, а не температа). Сколько дней в декабре температура была выше средней. Определить минимальную температуру второй декады. "Компилятор" TurboProlog.

 
 
 
 
Сообщение22.10.2007, 23:46 
cz0 писал(а):
Совершенно непонятный синтаксис…
Это не синтаксис, это «парадигма» другая.

Давайте решим первую задачу. Разделим её на две части:
1. Отыщем минимальное значение температуры.
2. Отыщем номер элемента, обладающего этим минимальным значением.
Пусть алгоритм получится двухпроходный, зато первая часть может оказаться полезной при решении третьей задачи.

Код:
CONSTANTS
december=[-1,-2,-5,-7,-6,-7,-3]

DOMAINS
int=integer
list=integer*

PREDICATES
min(int,int,int)
minlist(list,int)
xpos(list,int,int)

CLAUSES
min(X,Y,X):-
   X<Y,!.      
min(_,Y,Y).      

minlist([X],X).
minlist([H|T],M):-
   minlist(T,MT),
   min(H,MT,M).

xpos([X|_],X,1).
xpos([_|T],X,I):-
   xpos(T,X,IT),
   I=IT+1.
   
GOAL
xpos(december,Y,X), minlist(december,Y), write(X).


Рекурсия не хвостовая; нет уверенности в отсутствии ошибок; но идея, надеюсь, ясна.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group