Скопировать список, элементы которого не превышают 10 - Prolog

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

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

Привет. Задача такая: создать список из N случайных чисел от 0 до 20 и скопировать из него элементы которые не превышают 10 в новый список.
Листинг программы
  1. trace
  2. domains
  3. int = integer*
  4. mylist = integer*
  5. predicates
  6. list(integer, int)
  7. moreten(int, int)
  8. clauses
  9. list(0, []):-
  10. !.
  11. list(N, [X|H]):-
  12. random(21, X),
  13. N1 = N - 1,
  14. list(N1, H).
  15. moreten([], []).
  16. moreten([X|H], T):-
  17. X<10,
  18. !,
  19. moreten(H, T).
  20. moreten([X|H], [Y|T]):-
  21. X>10,
  22. Y=X,
  23. moreten(H, T).
  24. goal
  25. X=[10,8,15,2,3],
  26. moreten(X,Y),
  27. write(Y),
  28. nl.
Создание списка и заполнение его случайными числами работает, а вот вторая часть задачи работает частично, не пойму где проблема. Допустим с входным списком [10, 8, 15, 2, 3] программа работает некорректно. Подскажите где проблема?
upd. Из-за моей невнимательности, забыл поставить "=" в один из промежутков.

Решение задачи: «Скопировать список, элементы которого не превышают 10»

textual
Листинг программы
  1. moreten([], []).
  2.  
  3. moreten([X|T], R):-
  4.   X>10,
  5.   !,
  6.   moreten(T, R).
  7.  
  8. moreten([X|T], [X|R]):-
  9.   moreten(T, R).

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


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

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

8   голосов , оценка 3.75 из 5

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

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

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