Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 4 задачи по swi-prolog 
:(
    Опции темы
eddilou
  Дата 10.5.2012, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.5.2012

Репутация: нет
Всего: нет



Здравствуйте всем, помогите пожалуйста решить данные задачи, только начал изучать, а уже такое дают... пишу на SWI-Prolog

1. 
Напишите программу вычисления целочисленного квадратного корня из натурального числа N, определяемого как число I, такое, что I*I <= N, но (I+1)*(I+1) > N . Используйте определение предиката between/3 для генерирования последовательности натуральных чисел с помощью механизма возвратов.


2. 
Определим операторы:
:- op( 100, fy, ~).
:- op( 110, xfy, &).
:- op( 120, xfy, v).
Булева формула есть терм, определяемый следующим образом: константы true и false - булевы фор-мулы; если X и Y - булевы формулы, то и X v Y, X & Y, ~X - булевы формулы, здесь v и & - бинарные инфиксные операторы дизъюнкции и конъюнкции, а  ~ - унарный оператор отрицания.
Напишите программу, распознающую логические формулы в дизъюнктивной нормальной форме, т.е. формулы, являющиеся дизъюнкцией конъюнкций литералов, где литерал - атомарная формула или ее отрицание. (См. решение задачи о конъюнктивной нормальной форме).


3.
Определите предикат occurances(+Sub,+Term,-N), истинный, если число  N равно числу вхождений подтерма Sub в терм Term. Предполагается, что терм Term не содержит переменных. 
Любой терм t – это дерево. И любое поддерево в этом дереве представляет терм t1, который и называется подтермом исходного терма t. 
Например, терм  f(x)+p(f(x)*g([5,a+b,5+a])) содержит следующие подтермы

Подтерм                                                     Количество вхождений данного подтерма в терм
f(x)+p(f(x)*g([5,a+b,5+a]))                                   1
f(x)                                                                            2
p(f(x)*g([5,a+b,5+a]))                                            1
x                                                                             2
f(x)*g([5,a+b,5+a])                                                     1
g([5,a+b,5+a])                                                  1
[5,a+b,5+a]                                                         1
5                                                                           2
a+b                                                                            1
5+a                                                                           1
a                                                                             2
b                                                                            1


4.
Натуральное число n называется совершенным, если сумма всех его делителей равна 2n. Найдите все совершенные числа, меньшие 1000 (их должно быть 3).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0368 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.