• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Prolog-"файлы"

  • Автор темы igrokk
  • Дата начала
I

igrokk

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

rrrFer

я тебе уже отвечал на другом форуме и скинул код для SWI Prolog, если не подходит - укажи диалект пролога, который тебе нужен.
Если подходит, но непонятно -
 
Последнее редактирование:
I

igrokk

я тебе уже отвечал на другом форуме и скинул код для SWI Prolog, если не подходит - укажи диалект пролога, который тебе нужен.
Если подходит, но непонятно - .

Можешь помочь пример переделать?
Код:
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).
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!