Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Мэтт
1 / 1 / 0
Регистрация: 06.11.2016
Сообщений: 22
1

Работа со списками Prolog

11.11.2018, 07:15. Просмотров 87. Ответов 1

Всем привет!

С prolog я не сталкивался, и честно не понимаю как он работает, но мне нужно реализовать следующую программу, связанную со списками. Может эта задача уже решалась на форуме и я ее просто не нашел, но если вы мне поможете будет просто отлично.

Условие задачи:
По кругу расположены n человек. Начиная с некоторой позиции, считаем от 1 до m по кругу. Каждый m-ый человек выбывает из круга, при этом круг смыкается. Определите порядок выбывания из круга.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2018, 07:15
Ответы с готовыми решениями:

Prolog. Работа со списками
У кого-нибудь есть какие-то идеи насчет этой задачи? :) Или хотя бы натолкните, пожалуйста, на...

Работа со списками (Turbo Prolog 2.0)
Срочно нужна помощь с задачкой по прологу. Зачет на носу. все задачи решила, а с этой прям ступор...

Работа со списками в Turbo Prolog
Доброго времени суток тем кто посетил этот топ. Дело собственно вот в чем: Дана задача...

Работа со списками в Visual Prolog 7.2
Доброго времени. После пары суток бесплодного поиска, обращаюсь к вам за помощью. Не смог найти...

Ввод и работа со списками в SWI Prolog
Задание. Обеспечить ввод и формирование двух вещественных списков с проверкой. Найти объединение...

1
arlat
382 / 375 / 75
Регистрация: 07.10.2013
Сообщений: 818
13.11.2018, 16:56 2
Если после смыкания круга, начинаем отсчет опять с первого, то где-то так:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
out_list(Xs, M, Ys) :-
    M > 0,
    out_list(Xs, Xs, 1, M, Ys).
 
out_list([], [], _, _, []).
out_list([], [X0 | Xs0], N, M, Ys) :-
    !,
    out_list([X0 | Xs0], [X0 | Xs0], N, M, Ys).
out_list([X | _], Xs0, M, M, [X | Ys]) :-
    select1(X, Xs0, Xs1),
    !,
    out_list(Xs1, Xs1, 1, M, Ys).
out_list([_ | Xs], Xs0, N, M, Ys) :-
    N1 is N + 1,
    out_list(Xs, Xs0, N1, M, Ys).
 
select1(Elem, [Elem | Tail], Tail).
select1(Elem, [Head | Tail], [Head | Rest]) :-
    select1(Elem, Tail, Rest).
Иначе, нужно дорабатывать...

Добавлено через 1 минуту
Prolog
1
2
3
?- out_list([1,2,3,4,5,7,8,9], 3, Ys).
Ys = [3, 4, 5, 7, 8, 9, 1, 2] ;
false.
Добавлено через 1 минуту
Скорей всего, после смыкания продолжаем, позже сделаю...

Добавлено через 1 час 8 минут
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
out_list1(Xs, M, Ys) :-
    M > 0,
    out_list1(Xs, Xs, 1, M, Ys).
 
out_list1([], [], _, _, []).
out_list1([], [X0 | Xs0], N, M, Ys) :-
    !,
    out_list1([X0 | Xs0], [X0 | Xs0], N, M, Ys).
out_list1([X | Xs], Xs0, M, M, [X | Ys]) :-
    append(Xs1, [X | Xs], Xs0),
    append(Xs, Xs1, Xs2),
    !,
    out_list1(Xs2, Xs2, 1, M, Ys).
out_list1([_ | Xs], Xs0, N, M, Ys) :-
    N1 is N + 1,
    out_list1(Xs, Xs0, N1, M, Ys).
Prolog
1
2
3
?- out_list1([1,2,3,4,5,6,7,8,9], 3, Ys).
Ys = [3, 6, 9, 4, 8, 5, 2, 7, 1] ;
false.
append найдете...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2018, 16:56

Работа со списками в Prolog (задача на отрезки; есть наработки)
Здравствуйте! Изучаю пролог недавно, и передо мной встала следующая задача: упорядочить список...

Задачка со списками Prolog
Помогите, пожалуйста решить задачку! Есть список, например нужно написать предикат, который...

Задача со списками (SWI-Prolog)
Доброго времени суток, Есть 2 задачи на списки: 1. Разделить список на две части так, чтобы они...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru