Возврат правильного списка - Prolog

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

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

есть код
этот кусок обрабатывает ввод с клавиатуры типов пролога, сохранение в список, и проверку, чтоб в списке не было нестандастных типов. потом правильный список должен вернуться обратно в программу, но возвращается тот список, которым я вводил первым. ВОПРОС, не подскажите, как сделать так, чтоб возвращался последний введенный мной список?
по сути проблема в том, что после того, как я наконец то введу правильный список, программа рекурсивно откатиться к самому первому, и проблема только в том, как правильно вставить предикат отсечения.

Решение задачи: «Возврат правильного списка»

textual
Листинг программы
        список_типов([H|T]):- 
        readln(H),!,
        список_типов(T).
        
    список_типов([]).
        
    не_стандартный_тип(H):-
        H<>"symbol",
        H<>"char",
        H<>"string",
        H<>"real",
        H<>"integer",write("проверили типы"),nl.
 
    %главный предикат обработки 
    правильный_список_типов(Список):-
        список_типов(Список),write("после списка типов"),nl,
        проверка_списка(Список),write(Список).
    
    %рекурсивно проверяю, чтоб в списке не было ни одного не стандартного типа
    проверка_списка([H|T]):-
        not(не_стандартный_тип(H)),write("в проверка"),nl,
        проверка_списка(T),write("после проверка типа"),nl.
        
    проверка_списка([]):-write("конец списка"),nl.
    
    проверка_списка(Список):-
        bound(Список),
        write("Найден нестандартный тип, повторите ввод аргументов!\n"),
        правильный_список_типов(_),write("неправильный тип"),nl.

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


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

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

6   голосов , оценка 3.5 из 5
Похожие ответы