Prolog-"файлы"

Тема в разделе "Другие", создана пользователем igrokk, 2 май 2013.

  1. igrokk

    igrokk New Member

    Регистрация:
    2 май 2013
    Сообщения:
    2
    Симпатии:
    0
    Создайте предикат, осуществляющий переписывание из одного файла, содержащего числа, в другой файл только тех чисел, которые являются четными.
    без понятия как можно это реализовать в прологе.
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    я тебе уже отвечал на другом форуме и скинул код для SWI Prolog, если не подходит - укажи диалект пролога, который тебе нужен.
    Если подходит, но непонятно - читай про работу с файлами.
     
    #2 rrrFer, 3 май 2013
    Последнее редактирование модератором: 22 май 2016
  3. igrokk

    igrokk New Member

    Регистрация:
    2 май 2013
    Сообщения:
    2
    Симпатии:
    0
    Можешь помочь пример переделать?
    Код (Text):
    domains
     
    strElement=string
     
    strList=strElement*
     
    intElement=integer
     
    intList=intElement*
     
    predicates
     
    /************************преобразова ние в список*/
     
    separ(string,strlist)
     
    scan (string,strlist,string)
     
    /*********************************** *************/
     
    /******преобразование списка слов в список чисел*/
     
    convertStrListToIntList(strList,int List)
     
    csltil(intList,intList,strElement)
     
    /*********************************** *************/
     
    /*******************дополнение списка квадратами*/
     
    p( intList, intList )
     
    /*********************************** *************/
     
     
    clauses
     
    /************************преобразова ние в список*/
     
    separ(Str,[T|L]):-
     
    frontchar(Str,S3,S2),
     
    str_char(S5,S3),
     
    scan(S2,[T|L],S5),!.
     
    separ(_,[]).
     
    scan(Str,[T|L],S):-
     
    frontchar(Str,S3,S2),
     
    NOT(S3=' '),
     
    str_char(S5,S3),
     
    concat(S,S5,S1),
     
    scan(S2,[T|L],S1),!.
     
    scan("",[T|L],S):-
     
    T=S,separ("",L).
     
    scan(Str,[T|L],S):-
     
    T=S,frontchar(Str,_,S2),
     
    separ(S2,L),!.
     
    /*********************************** *************/
     
    /******преобразование списка слов в список чисел*/
     
    convertStrListToIntList([],[]):-!.
     
    convertStrListToIntList([HS|TS],LI):-
     
    convertStrListToIntList(TS,TI),
     
    csltil(TI,LI,HS).
     
    csltil(TL,[HI|TL],HS):-
     
    str_int(HS,HI),!.
     
    csltil(TL,TL,_):-!.
     
    /*********************************** *************/
     
    /*******************дополнение списка квадратами*/
     
    p( [], [] ).
     
    p( [H|T], [H|[HH|TT]] ):-
     
    HH = H*H, p(T,TT).
     
    /*********************************** *************/
     
     
    goal
     
    %S="1 2 3 4 12 asd 24 12",
     
    file_str("input.txt",S),
     
    separ(S,LS),
     
    convertStrListToIntList(LS,IL),
     
    write(IL),nl,
     
    p(IL,RL), write(RL),nl.domains
     
    strElement=string
     
    strList=strElement*
     
    intElement=integer
     
    intList=intElement*
     
    predicates
     
    /************************преобразова ние в список*/
     
    separ(string,strlist)
     
    scan (string,strlist,string)
     
    /*********************************** *************/
     
    /******преобразование списка слов в список чисел*/
     
    convertStrListToIntList(strList,int List)
     
    csltil(intList,intList,strElement)
     
    /*********************************** *************/
     
    /*******************дополнение списка квадратами*/
     
    p( intList, intList )
     
    /*********************************** *************/
     
     
    clauses
     
    /************************преобразова ние в список*/
     
    separ(Str,[T|L]):-
     
    frontchar(Str,S3,S2),
     
    str_char(S5,S3),
     
    scan(S2,[T|L],S5),!.
     
    separ(_,[]).
     
    scan(Str,[T|L],S):-
     
    frontchar(Str,S3,S2),
     
    NOT(S3=' '),
     
    str_char(S5,S3),
     
    concat(S,S5,S1),
     
    scan(S2,[T|L],S1),!.
     
    scan("",[T|L],S):-
     
    T=S,separ("",L).
     
    scan(Str,[T|L],S):-
     
    T=S,frontchar(Str,_,S2),
     
    separ(S2,L),!.
     
    /*********************************** *************/
     
    /******преобразование списка слов в список чисел*/
     
    convertStrListToIntList([],[]):-!.
     
    convertStrListToIntList([HS|TS],LI):-
     
    convertStrListToIntList(TS,TI),
     
    csltil(TI,LI,HS).
     
    csltil(TL,[HI|TL],HS):-
     
    str_int(HS,HI),!.
     
    csltil(TL,TL,_):-!.
     
    /*********************************** *************/
     
    /*******************дополнение списка квадратами*/
     
    p( [], [] ).
     
    p( [H|T], [H|[HH|TT]] ):-
     
    HH = H*H, p(T,TT).     
     
    #3 igrokk, 3 май 2013
    Последнее редактирование модератором: 22 май 2016
Загрузка...
Похожие Темы - Prolog файлы
  1. 203
    Ответов:
    0
    Просмотров:
    830
  2. ChuckNorris7
    Ответов:
    0
    Просмотров:
    1.069
  3. snakelight
    Ответов:
    2
    Просмотров:
    1.380
  4. Thrillseeker
    Ответов:
    8
    Просмотров:
    2.144
  5. lmike
    Ответов:
    27
    Просмотров:
    295

Поделиться этой страницей