Разбить исходный список на два списка примерно одинаковой длины - Prolog
Формулировка задачи:
Разбить исходный список на два списка примерно одинаковой длины.
Заранее благодарю!
Листинг программы
- domains
- list = real*
- predicates
- nondeterm read_list(integer, list)
- nondeterm result
- clauses
- read_list(0,[]).
- read_list(N,[H|T]):-readreal(H),N1=N-1, read_list(N1,T).
- result:-write("Enter the number of elements"),nl,
- write("N = "),readint(N),
- write("Enter the elements: "),nl,
- read_list(N,L),
- write("List = "),
- write(L),nl.
- goal
- result.
Решение задачи: «Разбить исходный список на два списка примерно одинаковой длины»
textual
Листинг программы
- domains
- int=integer
- intl=int*
- predicates
- len(intl,int)
- sub(intl,int,int,intl)
- split(intl,intl,intl)
- clauses
- len([],0).
- len([_|T],N) :- len(T,N1), N=N1+1.
- sub(_,0,0,[]).
- sub([X|T],0,N,[X|R]) :- N1=N-1, sub(T,0,N1,R).
- sub([_|T],M,N,R) :- M>0, M1=M-1, sub(T,M1,N,R).
- split(X,X1,X2) :- len(X,L), LL=(L div 2),L1=LL,L2=L-LL,sub(X,0,L1,X1),sub(X,L1,L2,X2).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д