Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2016, 21:13   #1
don_zaresh
 
Регистрация: 10.02.2016
Сообщений: 9
По умолчанию Visual Prolog - сортировка пузырьком списка списков

Помогите, пожалуйста, с кодом. Задача звучит так: "Применить сортировку пузырьком к тем элементам списка списков атомов, если их первый элемент больше заданного числа n"
Например, есть такой список списков: [[2,3,5,6],[3,9,0,12,2],[4,0,0,1]]. Пусть n=2. Тогда получим [[2,3,5,6],[0,2,3,9,12],[0,0,1,4]]

Набросал такой код. Но не уверен в его правильности, а также необходимо как-то обработать ситуацию, когда первый элемент не больше числа n.
Код:
domains
    listI = integer*
    listL = listI*
 
predicates
    nondeterm printlist(listL) %вводим списки с клавиатуры
    nondeterm permutation(listL,listL) %сравнение двух соседних элементов
    nondeterm bubble(listL,listL) %собственно сортировка
    nondeterm pred (listL, integer, listL) %здесь должна выполняться основная часть программы
        
clauses
    %printlist ([ ]):- !.
    %printlist ([H | T]):- write (H), nl, printlist (T).
                  
    permutation([X,Y|T],[Y,X|T]):- X>Y,!.
    permutation([X|T],[X|T1]):- permutation(T,T1).
    
    bubble(L,L1):- permutation(L,LL),!,bubble(LL,L1).
    bubble(L,L).
    
    pred ([[H|T2]|T],X,[L|R]) :- H>X, bubble ([H|T2],L). %начинаем обрабатывать элементы первого подсписка
    pred (T,X,R), !. %остальные заносим в хвост
    %pred ([[H|T2]|T],X,[H1|T1]) :- % здесь надо написать условие, если H<=X
    pred ([],_,[]). %если все списки обработали
    
goal
    pred ([[1],[2,3],[0,2],[7,3],[0,0,0]],2, F).
don_zaresh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Prolog - Обработка списков INIFREY Помощь студентам 2 05.11.2015 19:07
SWI prolog и Visual prolog поиск маршрута Екатерина 123 Помощь студентам 0 27.08.2015 19:42
[SWI-Prolog] Создание списков Harbinger Помощь студентам 1 13.04.2015 14:20
Prolog.Сортировка списка KLOP Помощь студентам 3 23.12.2012 22:35
VISUAL PROLOG удалить из списка подсписок Glo Помощь студентам 0 28.05.2012 20:53