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

Как отсортировать список по модулю на Prolog?

13.11.2017, 19:12. Показов 1231. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не могу разобраться в Prolog
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.11.2017, 19:12
Ответы с готовыми решениями:

Как отсортировать список по именам и как отсортировать дату рождения в обратном порядке
Добрый вечер. Получилось только вывести на экран список, вывести на экран отсортированный список по дате рождения. У меня не получается...

Список как аргумент в БД Visual Prolog
Привет всем. Подскажите пожалуйста, возможно ли в Visual Prolog в БД, в качестве аргумента поставить список(массив)? Для каждой...

Как преобразовать список integer в строку (Visual prolog 5.2)?
Вопрос - в заголовке темы

4
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,710
Записей в блоге: 14
13.11.2017, 22:03
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
domains
int=integer
intl=int*
 
predicates
 
app(intl,intl,intl)
split(intl,int,intl,intl)
sort(intl,intl)
 
clauses
 
app([],X,X).
app([H|T],X,[H|R]) :- app(T,X,R).
 
split([],_,[],[]).
split([H|X],D,[H|L],R) :- abs(H)<= abs(D), split(X,D,L,R).
split([H|X],D,L,[H|R]) :- abs(H) > abs(D), split(X,D,L,R).
 
sort([],[]).
sort([H|T],Q) :- split(T,H,L,R), sort(L,SL), sort(R,SR), app(SL,[H],Q1), app(Q1,SR,Q).
1
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 7
13.11.2017, 23:53  [ТС]
пасиба

Добавлено через 33 минуты
Я написал такой код, помогите переделать его на то что мне нужно


Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
member( X, [X | _]).
member( X, [_ | Tail]):-member( X, Tail).
 
% create list with integer elements and sort it ascending order
  run:-
     write('Input list. '), nl,
     write('For exit type -0'), nl,
     write_database,
     findall(X, dlist(X), List),
     insertsort(List,List_sort),
     show(List_sort).
   write_database:-
     repeat,
     write('Input some number: '), nl,
     read(Number),
     check(Number), abs(Number,_),!.
 
check(-1):- nl,nl.
check(Num) :-assertz(dlist(Num)),write('fdf'),
     fail.
 
show(List) :-
     write('Sorted list: '), nl,
     member(X, List),
     write(X), nl,
     fail.
  show(_) :- read(_).
  insertsort([],[]).
  insertsort([X|T], Sorted_L) :- insertsort(T, Sorted_T), insert(X, Sorted_T, Sorted_L).
 
  insert(X, [Y|Sorted_L], [Y|Sorted_L1]):- ascorder(X,Y), !, insert(X, Sorted_L, Sorted_L1).
  insert(X, Sorted_L, [X|Sorted_L]).
  ascorder(X,Y) :- X > Y.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,710
Записей в блоге: 14
14.11.2017, 09:02
Цитата Сообщение от vovd Посмотреть сообщение
Я написал такой код,
- а комментировать предпочитаете по-английски?

Добавлено через 13 минут
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
domains
int=integer
intl=int*
 
predicates
 
app(intl,intl,intl)  %% склеивание списков
split(intl,int,intl,intl) %% расщепить список на два списка - меньших и не меньших заданного числа
sort(intl,intl) %% быстрая сортировка
 
clauses
 
app([],X,X). %% присоединение к пустому списку дает исходный
app([H|T],X,[H|R]) :- app(T,X,R). %% объединение есть голова первого, присоединенная к объединению
                                              %% хвоста первого и второго
 
split([],_,[],[]). %% расщепление пустого дает пустой
split([H|X],D,[H|L],R) :- abs(H)<= abs(D), split(X,D,L,R). %% если модуль головы меньше модуля разделяющего эл-та,
                                                                             %% то голова идет в первый список
split([H|X],D,L,[H|R]) :- abs(H) > abs(D), split(X,D,L,R).  %% иначе - во второй
 
sort([],[]). %% сортировка пустого дает пустой
               %% непустой список расщепляем по голове, сортируем меньшие, большие и все объединяем                   
sort([H|T],Q) :- split(T,H,L,R), sort(L,SL), sort(R,SR), app(SL,[H],Q1), app(Q1,SR,Q).
0
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 7
14.11.2017, 19:24  [ТС]
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2017, 19:24
Помогаю со студенческими работами здесь

Как отсортировать список?
Как отсортировать список в алфавитном порядке по автору и по убыванию года выпуска? class Library { public string...

Как отсортировать список по дате?
Как отсортировать адаптер по времени(time) adapter = new FirebaseListAdapter&lt;MessageList&gt;(this, MessageList.class, ...

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

Как отсортировать односвязный список????
class lib { struct element { string data; element *next; element (string dat, element *nxt) : data(dat),...

Как отсортировать двусвязный список?
Здравствуйте, имеется двусвязный список, в узлах - информация о поездах и нужно его отсортировать по &quot;возростанию&quot; городов. Мой...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru