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).