2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Пролог, элементарная задача, помогите.
Сообщение20.10.2007, 17:00 


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

 Профиль  
                  
 
 
Сообщение22.10.2007, 23:46 
Заслуженный участник


18/03/07
1068
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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group