Получить список в котором удалена вторая треть - Erlang
Формулировка задачи:
Помогите решить задачу на языке Erlang.
Задан список длина которого кратная трем. Получить список в котором удалена вторая треть.
Листинг программы
- -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.
Решение задачи: «Получить список в котором удалена вторая треть»
textual
Листинг программы
- 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д