Разбить исходный список на два списка примерно одинаковой длины - Prolog

Узнай цену своей работы

Формулировка задачи:

Разбить исходный список на два списка примерно одинаковой длины.
Листинг программы
  1. domains
  2. list = real*
  3. predicates
  4. nondeterm read_list(integer, list)
  5. nondeterm result
  6. clauses
  7. read_list(0,[]).
  8. read_list(N,[H|T]):-readreal(H),N1=N-1, read_list(N1,T).
  9. result:-write("Enter the number of elements"),nl,
  10. write("N = "),readint(N),
  11. write("Enter the elements: "),nl,
  12. read_list(N,L),
  13. write("List = "),
  14. write(L),nl.
  15. goal
  16. result.
Заранее благодарю!

Решение задачи: «Разбить исходный список на два списка примерно одинаковой длины»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. len(intl,int)
  7. sub(intl,int,int,intl)
  8. split(intl,intl,intl)
  9.  
  10. clauses
  11. len([],0).
  12. len([_|T],N) :- len(T,N1), N=N1+1.
  13.  
  14. sub(_,0,0,[]).
  15. sub([X|T],0,N,[X|R]) :- N1=N-1, sub(T,0,N1,R).
  16. sub([_|T],M,N,R) :- M>0, M1=M-1, sub(T,M1,N,R).
  17.  
  18. 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).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы