Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 02.03.2014
Сообщений: 133
1

Получить суффикс списка

26.09.2015, 23:11. Показов 1179. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача - найти хвост списка указанной длины.
Prolog
1
2
3
4
5
6
7
8
9
10
11
%если исходный список пустой, то вернуть пустой список
    suf([],[],_).
%ошибка The variable is not bound in this clause _ , хотя вместо _ в этом случае всегда конкретное число
%ошибка Basic domain becomes reference domain: integer
 
%если полностью нашли суффикс, то вернуть пустой список
    suf(L,[],0).
%ошибка The variable is not bound in this clause L, хотя список известен
 
%если список не пустой и счётчик не 0, продолжаем с укороченными списками
    suf(L,L1,X):- suf(L2,L3,Y), X=Y+1, conc(L2,[A],L), conc(L3,[A],L1).
Почему ошибки?

Если что, conc - сцепление списков.
Prolog
1
2
    conc([],B1,B1):- !.
    conc([X1|L11], L21, [X1|L31]):- conc(L11, L21, L31).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2015, 23:11
Ответы с готовыми решениями:

Из исходного списка получить два новых списка путем копиpования
Здравствуйте! Помогите, пожалуйста, реализовать следующую функцию. Изломал всю голову, но так и не...

Получить указатель на элемент двунаправленного списка, добавить значение в начало списка и очистить его
Нужно создать двунаправленный список //вроде так, но не уверен struct Double_List {//структура...

Суффикс *32 в процессах
Здравствуйте, помогите разобраться с проблемой После запуска одной игры с исполняющим файлом...

Суффикс в переменных
Привет всем! Подскажите пожалуйста зачем нужен суффикс в таких ситуациях long x,y; x=500L;...

1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,654
Записей в блоге: 13
27.09.2015, 09:22 2
Странное решение... Результат должен зависеть от длины исходного списка и от длины суффикса. Эта зависимость не прослеживается (возможно, я ошибаюсь).

Вот:

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
domains 
int=integer
intl=int*
 
predicates
len(intl,int)
cut(intl,int,intl)
suff(intl,int,intl)
 
clauses
len([],0).
len([_|T],N) :- len(T,N1), N=N1+1.
 
cut(X,0,X).
cut([_|X],N,Y) :- N1=N-1,cut(X,N1,Y).
 
suff(X,L,Y) :- len(X,LL), N=LL-L, cut(X,N,Y).
1
27.09.2015, 09:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2015, 09:22
Помогаю со студенческими работами здесь

Суффикс в литералах
Доброе время суток. Скажите пожалуйста зачем нужен суффикс в литералах??? Прочитав по этому поводу...

Суффикс класса модуля
в модуле меню написал Суффикс класса модуля = _menu с таблицах стилей создал класс #_menu{ }...

MPD5 - DNS-суффикс...
Всем доброго дня! Настроил mpd5 сервер, всё работает, всё замечательно... Вот теперь возник...

Лямба вызов (Получить разность между k - м элементом списка х и n - м элементом списка y)
Помогите пожалуйста Составить не рекурсивную программу в форме лямбда вызова. Получить разность...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru