Скопировать список, элементы которого не превышают 10 - Prolog
Формулировка задачи:
Привет.
Задача такая: создать список из N случайных чисел от 0 до 20 и скопировать из него элементы которые не превышают 10 в новый список.
Создание списка и заполнение его случайными числами работает, а вот вторая часть задачи работает частично, не пойму где проблема. Допустим с входным списком [10, 8, 15, 2, 3] программа работает некорректно.
Подскажите где проблема?
Листинг программы
- trace
- domains
- int = integer*
- mylist = integer*
- predicates
- list(integer, int)
- moreten(int, int)
- clauses
- list(0, []):-
- !.
- list(N, [X|H]):-
- random(21, X),
- N1 = N - 1,
- list(N1, H).
- moreten([], []).
- moreten([X|H], T):-
- X<10,
- !,
- moreten(H, T).
- moreten([X|H], [Y|T]):-
- X>10,
- Y=X,
- moreten(H, T).
- goal
- X=[10,8,15,2,3],
- moreten(X,Y),
- write(Y),
- nl.
upd. Из-за моей невнимательности, забыл поставить "=" в один из промежутков.
Решение задачи: «Скопировать список, элементы которого не превышают 10»
textual
Листинг программы
- moreten([], []).
- moreten([X|T], R):-
- X>10,
- !,
- moreten(T, R).
- moreten([X|T], [X|R]):-
- moreten(T, R).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д