формировать_список(1_).
формировать_список(1.):not(eof(readfile)),
readln(X),BHecTM(X,L,L1), формировать_список(1_1). формировать_список(1):-К=1,сорт(КХ1),зап(11).
внести(Х,[],[Х]):-!.
BHecTH(X,L,[X|L]):-!.
BHecTH("",L,L):-!.
/* Запись строк в файл */
1********************************************************1
зап([]).%:-!. зап([Х|1_]):-Х<>"",
write(X),nl,3an(L).
/**.,.♦..*.**..***♦*«**,*****«,*...**«*♦♦****,***.****/
/* Сортировка (вставками) */
/********.****,**.*.****«****«...*,**«*«««*.******,/
predicates
добав(строка,спис_строк,спис_строк)
clauses
copT([X|L],L1 ):-copT(L,L2),flo6aB(X,L2,L1).
сорт([],[]).
добав(Х,[],[Х]).
Ao6aB(X,[Y|L1],(Y|L2]):-X>Y,Ao6aB(X,L1,L2).
Ao6aB(X,[Y|L1],[X,Y|L1]):-X<=Y.
/******..***********************♦**.**,«*«**♦**».*****/
ЛПоказ исходного и отсортированного файлов*/
1********************************************************1
показ(ИмФВх.ИмФВых):-makewindow(1,2,2,"Bbmo",1,1,20,20),
file_str(HM0Bx,Z),display(Z), makewindow(2,2,2,"CTano", 1,23,20,20),
file_str(MMOBbix,ZZ),display(ZZ). 1********************************************************1
6. СПИСКИ 6.1. Представлениесписков
%3адание 1.
%Написать программу для определения:
%1 количества нулей в списке;
%2. максимального элемента в числовом списке;
%3. суммы четных элементов списка;
%4. количества четных элементов списка.
%Вх. параметры:
% список целых чисел вида [число,число,...]
%Вых. параметры:
% -количество нулей в списке;
% -максимальный элемент в списке;
% -сумма четных элементов списка;
% -количество четных элементов списка. 1********************************************************1
domains
4HOTo=integer
список=число*
predicates
кол_нулей(список,число) % -количество нулей в списке;
максимум(список.число) % -максимальный элемент в списке;
макс(число,число,число) % -максимум из двух чисел сум_чет(список,число) %сумма четных элементов списка;
четное(число) %определение четности числа кол_чет(список,число) %количество четных элементов списка.
clauses
Г*******************************************************/
кол_нулей([],0). кол_нулей([Число|Список],Колич)>
Число=0,кол_нулей(Список,Колич1),
Колич=Колич1+1. кол_нулей([Число|Список],Колич)>
Число<>0,кол_нулей(Список,Колич).
максимум({Число],Число). максимум([Число1,Число2|Хвост],Макс):максимум([Число2]Хвост],Макс1), макс(Число1 ,Макс1 ,Макс). макс(А,В,А):-А>=В,! макс(А,В,В).
сум_чет([],О).
сум_чет([Число|Хвост],СумЧет):-четное(Чиспо),!, сум_чет(Хвост,СумЧет1),СумЧет=СумЧет1+Число;
сум_чет(Хвост,СумЧет).
кол_чет([],0).
кол_чет([Число|Хвост],КолЧет):-четное(Число),!, кол_чет(Хвост,КолЧет1),КолЧет=КолЧет1+1;
кол_чет(Хвост,КолЧет). > **
четное(Число):-Число mod 2 = 0.
/•г***.*»****»***********.******.*********»**.******»*****/
6.2. Операциинадсписками
%1. выделить в отдельный списсж те элементы заданного списка, % которые лежат в интервале от 1 до 5; %2. перевернуть список наоборт (реверс); %3. определить предикат палиндром(Список);
%Вх. параметры:
% список целых чисел вида [число,число, ..]
%Вых. параметры:
% -список чисел, входящих в заданный диапазон:
% выборка([число,число,...],Ответ);
% -перевернутый (реверсивный) список:
% реверс([число,число,...],Ответ);
% -предикат палиндром(Список).
% па'линдром([число,число,...]),
domains
%4ncno=integer
список=число*
cnoBO=string
спис_слов=слово*
predicates
выборка(список.список)
реверс(список.список)
конкат(список,список, список) лалиндром(список) перевод(список,спис_слов) означает(число,слово) clauses
выборка([],[]). выборка([Число|ХвостВх],[Число(ХвостВых]);Число>1,Число<5, выборка(ХвостВх,ХвостВых). выборка([Число|ХвостВх],ХвостВых):Число<=1, выборка(ХвостВх.ХвостВых). выборка([Число|ХвостВх],ХвостВых)>
Число>=5, выборка(ХвостВх,ХвостВых).
реверс{[],[]) реБерс([Число|ХвостВх],СписВых)>
реверс(ХвостВх,ХвостВых), конкат(ХвостВых,[Число],СписВых). конкат([],Спис,Спис). конкат([Голова|Хвост1],Спис,[Голова|Хвост2])>
конкат(Хвост1 ,Спис,Хвост2).
палиндром(СписВх):реверс(СписВх,СписВых), СписВх=СписВых.
7. СТРУКТУРЫ 7.1. Задачао 8 ферзях
Эта задача состоит в отыскании такой расстановки восьми ферзей на пустой шахматной доске, в которой ни один из ферзей не находится под боем другого.
/..«..«**,****♦,**,***.«*,*♦,.♦*«**.****«„*„**.**.„«„,*♦/
% Задача о 8 ферзях
/*************♦***************************************************/
domains
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.