Сборник задач по курсу «Логическое программирование»: Учебное пособие, страница 8

102.  В разделе БД хранится текст на русском языке. Каждый терм, хранящийся в разделе, представляет собой предложение на русском языке. Осуществить форматирование текста, переписав его в новый раздел БД. Форматирование производится путем разбиения всего текста на строки длиной, не превышающей заданную ширину страницы (переносы расставляютя по правилам русского языка).

Аргументы: имя раздела БД с исходным текстом; ширина страницы (в знаках); имя раздела БД с отформатированным текстом.

?- recorded(test1,X,_). X = Впрочем, был еще и повод. -> ; X = Возможно, главный. -> ; X = Его сложно объяснить в двух словах, мимоходом. -> ; X = И чем ближе к концу моего рассказа, тем сложнее. -> ; no ?- pred(test1,46,test2). yes ?- recorded(test2,X,_). X = Впрочем, был еще и повод. Возможно, главный. -> ; X = Его сложно объяснить в двух словах, мимоходом. -> ; X = И чем ближе к концу моего рассказа, тем слож- -> ; X = нее. -> ; no ?-

103.  В раздел БД загрузить текст программы на языке Паскаль и удалить из него комментарии.

Аргументы: имя файла с исходной программой; имя раздела БД.

?- pred(’first.pas’,test1). yes ?-

104.  В двух разделах БД хранятся произвольные термы. Переписать в третий раздел только те термы, которые содержатся в первом разделе, но не содержатся во втором.

Аргументы: имя первого раздела БД; имя второго раздела БД; имя третьего раздела БД.

?- recorded(test1,X,_). X = a -> ; X = v -> ; X = t -> ; X = 7 -> ; no ?- recorded(test2,X,_). X = 4 -> ; X = 6 -> ; X = a -> ; X = x -> ; no ?- pred(test1,test2, test3). yes ?- recorded(test3,X,_). X = v -> ; X = t -> ; X = 7 -> ; no ?-

105.  Растровое изображение хранится в дисковом файле формата PPM (см. приложение В). Подсчитать количество цветов, используемых в данном изображении.

Аргументы: имя файла; количество цветов.

?- pred(’sample.ppm’,X). X = 27 -> ; yes ?-

106.  В разделе БД содержатся существительные русского языка. Заполнить заданный шаблон (подобие кроссворда, см. приложение В) этими существительными так, что бы каждое слово было использовано всего один раз.

Аргументы: имя раздела БД (словарь); имя факта (задает шаблон); список слов (заполняют шаблон).

?- pred(verb,form,X). X = казак*роман*бокал+короб*замок*канал -> ; … yes ?-

107.  В разделе БД хранится шаблон кроссворда (см. пример и приложение В). Преобразовать шаблон к виду, пригодному для использования в задаче составления кроссворда.

Аргументы: имя раздела БД; шаблон (список).

?- recorded(test1,X,_). X = xxxxx -> ; X = x x x -> ; X = xxxxx -> ; X = x x x -> ; X = xxxxx -> ; no ?- pred(test1,X). X = [_1,_2,_3,_4,_5]*[_6,_7,_8,_9,_A]*[_B,_C,_D,_E,_F]+ [_1,_11,_9,_12,_5]*[_3,_13,_8,_14,_D]*[_5,_15,_A,_16,_F] yes ?-

108.  В разделе БД содержатся числа. Найти все различные совокупности чисел (как по количеству элементов, так и по составу) такие, что сумма чисел совокупности не превышает заданного числа.

Аргументы: имя раздела БД (множество чисел); ограничение на сумму (число); список ссылочных номеров допустимого подмножества.

?- recorded(test1,X,R). X = 3 R = ~402F0A -> ; X = 2 R = ~402F32 -> ; X = 5 R = ~402F5E -> ; X = 7 R = ~402F20 -> ; X = 2 R = ~402F14 -> ; no ?- pred(test1,5,X). X =  [~402F0A]-> ; X =  [~402F32]-> ; X =  [~402F5E]-> ; X =  [~402F14]-> ; X =  [~402F0A,~402F32]-> ; X =  [~402F0A,~402F14]-> ; X =  [~402F32,~402F14]-> ; no ?-

109.  Растровое изображение хранится в дисковом файле формата PPM (см. приложение В). Произвести земену цвета, указанного во втором аргументе, на цвет, указанный в третьем аргументе. Результат сохранить в новом файле.

Аргументы: имя исходного файла; заменямый цвет; новый цвет имя нового файла.

?- pred(’sample.ppm’,(32,120,200),(0,0,0),’new.ppm’). yes ?-

110.  Дана матрица инцидентности графа (см. приложение В). Сформировать раздел БД так, чтобы каждой вершине графа соответствовал свой терм БД, являющийся списком ссылочных номеров термов, соответствующих тем вершинам графа, которые инцидентны данной вершине графа. Для примера диалога в среде интерпретатора использованы граф и матрица инцидентности из приложения В.