Форум программистов, компьютерный форум, киберфорум
Erlang, OTP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
3 / 3 / 1
Регистрация: 29.03.2014
Сообщений: 60

Получить список в котором удалена вторая треть

04.05.2015, 11:32. Показов 1723. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить задачу на языке Erlang.
Задан список длина которого кратная трем.
Получить список в котором удалена вторая треть.


Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-module(lists).
-export([main/2, part1/5, part3/5]).
 
% +List, -NewList
main(L,L1)->
    K2 = length(L) div 3+1,
    K3 = length(L) div 3*2+1,
    P11 = part1(L,1,K2,K3,L1),
    P13 = part3(L,K2,K2,K3,L1),
    lists:append(P11,P13).
 
% +List, +Counter, +K2, +K3, +Acc, -Part1, -Part3
part1([X|Xs],I,K2,K3,[X|P1]) when I < K2 ->
    I1 = I+1,
    part1(Xs,I1,K2,K3,P1).
part3([_|Xs],I,K2,K3,P3) when I >= K2, I < K3->
    I1 = I+1,
    part3(Xs,I1,K2,K3,P3);
part3(P3,K3,_,K3,P3)->
    P3.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2015, 11:32
Ответы с готовыми решениями:

Получить слово, в котором указанная буква удалена
дано слово и число получить слово в котором в указанная буква удалена?

Из заданной строки получить список слов, у которых первая буква гласная, а вторая – согласная
Из заданной строки получить список слов, у которых первая буква гласная, а вторая – согласная. Использовать регулярные выражения

Какова высота нижнего слоя земной атмосферы, в котором сосредоточена треть ее массы
Здравствуйте) Сначала немного о задаче: Какова высота нижнего слоя земной атмосферы, в котором сосредоточена треть ее массы?...

7
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
04.05.2015, 11:44
Лучший ответ Сообщение было отмечено raigon как решение

Решение

Цитата Сообщение от raigon Посмотреть сообщение
Получить список в котором удалена вторая треть.
вот ваша функция:
Prolog
1
Func = fun(L)-> Len=length(L) div 3,lists:sublist(L,Len)++lists:sublist(L,2*Len+1,Len) end.
или нужно сделать без использования библиотечного модуля lists?

Добавлено через 1 минуту
Цитата Сообщение от raigon Посмотреть сообщение
-module(lists).
не надо называть свой модуль также как стандартный.Назовите simple_list или my_list.
2
3 / 3 / 1
Регистрация: 29.03.2014
Сообщений: 60
04.05.2015, 11:57  [ТС]
Нужно без модуля list. Можно только append если нужно.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
04.05.2015, 12:21
Цитата Сообщение от raigon Посмотреть сообщение
Можно только append если нужно.
Не нужно

Prolog
1
2
3
NewFunc = fun(L)-> fun Func([], _, _)-> [];
Func([H|T], Len, N) when N < Len;N >= 2 * Len-> [H|Func(T, Len, N + 1)];
Func([_|T], Len, N)-> Func(T, Len, N + 1)end(L, length(L) div 3, 0) end .
1
3 / 3 / 1
Регистрация: 29.03.2014
Сообщений: 60
04.05.2015, 12:32  [ТС]
Чтото она не работает.

syntax error before: Func

fun Func([], _, _)-> [];
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
04.05.2015, 12:35
Лучший ответ Сообщение было отмечено raigon как решение

Решение

Цитата Сообщение от raigon Посмотреть сообщение
Чтото она не работает.
У меня работает.Просто вставьте этот код в интерпретатор:
Prolog
1
2
3
4
5
 Y=[1,2,3,4,5,6,7,8,9].
NewFunc = fun(L)-> fun Func([], _, _)-> [];
Func([H|T], Len, N) when N < Len;N >= 2 * Len-> [H|Func(T, Len, N + 1)];
Func([_|T], Len, N)-> Func(T, Len, N + 1)end(L, length(L) div 3, 0) end .
NewFunc(Y).
1
3 / 3 / 1
Регистрация: 29.03.2014
Сообщений: 60
04.05.2015, 12:40  [ТС]
Так работает. Я просто делал через отдельный файл с module, export.
Спасибо большое за помощь!
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
06.05.2015, 14:34
Так будет почище. Студ вариант:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
drop_middle(L) ->
    Len = length(L) div 3,
    drop_middle(L, Len, -(Len + Len)).
 
drop_middle([],_,_) ->
    [];
drop_middle([X|Xs], Count, Mirror) ->
    case sgn(Count) of
        1 -> [X | drop_middle(Xs, Count - 1, Mirror + 1)];
        0 -> drop_middle([X | Xs], Mirror, -Mirror);
        -1 -> drop_middle(Xs, Count + 1, Mirror + 1)
    end.
 
sgn(N) when N < 0 ->
    -1;
sgn(N) when N > 0 ->
    1;
sgn(_) ->
    0.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2015, 14:34
Помогаю со студенческими работами здесь

Массив: Поменять местами верхнюю треть и нижнюю треть матрицы.
Дана матрица размера M×N. Поменять местами верхнюю треть и нижнюю треть матрицы.При выполнении второго задания не следует использовать...

Поменять местами верхнюю треть и нижнюю треть матрицы
Дана матрица размера M×N. Поменять местами верхнюю треть и нижнюю треть матрицы.

Поменять местами верхнюю треть и нижнюю треть матрицы
Дана матрица размера M×N. Поменять местами верхнюю треть и нижнюю треть матрицы.При выполнении второго задания не следует использовать ...

Первую треть слова разместить на месте третьей, вторую треть — на месте первой
с помощью procedure Дано слово из 12 букв. Поменять местами его трети следующим образом: а) первую треть слова разместить на месте...

Первую треть слова разместить на месте третьей, вторую треть — на месте первой
Дано слово из 12 букв. Поменять местами его трети следующим образом: а) первую треть слова разместить на месте третьей, вторую треть - на...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru