Главная /
Программирование /
Основы программирования на языке Visual Prolog
Основы программирования на языке Visual Prolog - ответы на тесты Интуит
Правильные ответы выделены зелёным цветом.
Все ответы: В курсе изучается логическое программирование и язык Пролог. В качестве реализации языка Пролог используется современная версия языка Visual Prolog. Предназначен для начинающих.
Все ответы: В курсе изучается логическое программирование и язык Пролог. В качестве реализации языка Пролог используется современная версия языка Visual Prolog. Предназначен для начинающих.
Логическое программирование в широком смысле это:
(1) программирование на хорновских дизъюнктах
(2) описание задачи на некотором логическом языке и ее решение посредством вывода в некоторой формальной системе
(3) набор инструкций определенного алгоритма из логики высказываний
(4) набор инструкций определенного алгоритма из логики предикатов
Определение предиката member(bt(_, X, _), X).
member(bt(L, _, R), X):- member(L, X); member(R, X).
Сколько решений имеет цель
member имеет вид:
member(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X)?
(1) 0
(2) 1
(3) 2
(4) 3
Пусть грамматика имеет вид:
d ::= dd | [(]d[)] | empty, где empty – пустое слово, в квадратных скобках написаны терминальные символы. Укажите те из перечисленных ниже слов, которые из нее выводятся:
(1)
()
(2)
(())()()
(3)
)()()
(4)
)))((( В чем заключается метод ван Эмдена по выбору хода в игре?
(1) сделать случайный ход, не приводящий к немедленному проигрышу
(2) сделать первый допустимый ход, не приводящий к немедленному проигрышу
(3) сделать финальный выигрышный ход или такой ход, чтобы противник в результате не смог выиграть
(4) сделать любой допустимый ход, не приводящий к немедленному проигрышу
Конкретизированная переменная – это переменная, которая
(1) не имеет никакого значения
(2) имеет какое-то значение
(3) получает значение при инициализации
(4) может иметь значение, может не иметь значения
Отсечение в запросе используется для того, чтобы запретить поиск альтернативных решений для подцелей, расположенных
(1) после отсечения
(2) до отсечения
(3) до и после отсечения
(4) иногда до, иногда после отсечения
Вызов предиката
fail
(1) всегда успешен
(2) всегда неуспешен
(3) может быть как успешным, так и неуспешным
(4) не может быть ни успешным, ни неуспешным
Определение предиката go(2):- !.
go(N):- write('a'), N1 = N - 1, go(N1).
Сколько раз будет напечатан символ 'a' в результате вызова цели
go имеет вид:
go(5)?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предиката count([_, _ | T], N) :- !, count(T, N1), N = N1 + 1.
count(_, 1).
Какое значение примет переменная
count имеет вид:
R в результате вызова цели count([1, 2, 3], R)?
(1) 1
(2) 2
(3) 3
(4) 0
Определение предиката select(A, [A | L], L).
select(A, [B | L], [B | L1]):- select(A, L, L1).
Сколько решений имеет цель
select имеет вид:
select(X, [1, 2, 2], L) ?
(1) 0
(2) 1
(3) 2
(4) 3
Факт – это
(1) правило без заголовка
(2) правило без тела
(3) любое правило программы
(4) любое логическое высказывание
Определение предиката count(leaf, 0).
count(bt(L, _, R), X):- count(L, Y), count(R, Z), X = Y + Z + 1.
Какое значение примет переменная X в результате вызова цели
count имеет вид:
count(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X) ?
(1) 1
(2) 2
(3) 3
(4) 7
В результате вызова
string::frontToken(" Karl meets Carla.", X, Y)переменные X и Y примут значения:
(1)
X = "Karl", Y = " meets Carla."
(2)
X = " Karl", Y = " meets Carla."
(3)
X = "Karl", Y = "meets Carla."
(4)
X = "Karl", Y = "meets" Напишите значение, которое примет переменная
S в результате вызова цели S = string::replaceAll("misteri", "i", "Y") :
(1)
sterymY
(2)
mYsterY
(3)
stermY
(4)
Ysterm Не унифицируется пара термов
(1)
t(a, b, k(c)) и t(a, b, _)
(2)
t(a, b, k(c)) и t(a, b, k(a))
(3)
t(a, b, k(c)) и t(X, Y, Z)
(4)
t(a, b, k(c)) и t(_, _, _) Отсечение в программе min(X, Y, X):- X < Y, !.
min(X, Y, Y):- X >= Y.
(1) является зеленым
(2) является красным
(3) является динамическим
(4) не используется при вычислениях
Определение предикатов lang(1, prolog).
lang(2, python).
lang(3, pascal).
print() :- lang(N, L), write(L), nl, N = 2, !.
print().
Сколько названий языков будет напечатано при вызове цели
lang и print имеет вид:print()?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предиката go(2):- write('a'), fail.
go(N):- N > 1, write('a'), N1 = N - 1, go(N1).
go(_).
Сколько раз будет напечатан символ 'a' в результате вызова цели
go имеет вид:
go(4)?
(1) 3
(2) 4
(3) 5
(4) 6
Определение предиката count([H | T], C, N) :- C1 = C + H, count(T, C1, N).
count([], N, N).
Какое значение примет переменная
count имеет вид:R в результате вызова цели count([2, 3, 4], 0, R)?
(1) 2
(2) 3
(3) 5
(4) 9
Определение предиката subset([], []).
subset([A | L], [A | S]):- subset(L, S).
subset([_ | L], S):- subset(L, S).
Сколько решений имеет цель
subset имеет вид:
subset([1, 2, 3], X) ?
(1) 0
(2) 3
(3) 7
(4) 8
Программа имеет вид:
likes(mary, books).
likes(bob, mary).
likes(bob, books).
Напишите решение, которое имеет цель
likes(X, mary):
(1) mary
(2) bob
(3) books
Определение предикатов tmember(t(X, _), X).
tmember(t(_, TL), X):- member(T, TL), tmember(T, X).
member(T, [T | _]).
member(T, [_ | L]):- member(T, L).
Сколько решений имеет цель
tmember и member имеет вид:
tmember(t(1, [t(2, [t(2, [])]), t(1, [])]), X) ?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !.
scan(_) = [].
Какое значение примет переменная
scan имеет вид:S в результате вызова S = scan("f(g(1)).")?
(1)
S = ["f(g(1))", "."]
(2)
S = ["f(g(1))."]
(3)
S = ["f", "(", "g", "(", "1", ")", ")"]
(4)
S = ["f", "(", "g", "(", "1", ")", ")", "."] Определение предиката count имеет вид:count(L1, L2) = length(filter(L1, {(X):- isMember(X, L2)})). Какое значение примет переменная
L в результате вызова цели L = count([1, 2, 3], [3, 2, 5])?
(1) 1
(2) 2
(3) 3
(4) 4
Программа имеет вид:
male(tom).
male(bob).
parent(ann, tom).
Укажите порядок нахождения решений для цели parent(X, Y); male(Y)
1) Y = tom
2) Y = bob
3) X = ann,Y = tom
(1) 1, 2, 3
(2) 3, 2, 1
(3) 3, 1, 2
(4) 2, 1, 3
Предикат
likes(mary, books).
likes(peter, mary).
likes(mary, peter). Цель
likes определяется следующим образом:likes(X, Y), !, likes(Y, Z) имеет следующее количество решений:
(1) 0
(2) 1
(3) 2
(4) 3
Определение предикатов fruit(1, apple).
fruit(2, pear).
print() :- fruit(_, X), write(X), nl, fruit(_, Y), write(Y), nl, fail.
print().
Напишите название фрукта, которое будет напечатано третьим в результате вызова цели
fruit и print имеет вид:print():
(1)
apple
(2)
pear Определение предикатов parent(tom, ann).
parent(ann, bob).
anc(X, Y):- parent(X, Y).
anc(X, Z):- parent(X, Z), anc(Z, Y).
Сколько решений имеет цель
parent и anc имеет вид:
anc(X, Y)?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката member(H, [H | _]).
member(H, [_ | T]) :- member(H, T).
Сколько решений имеет цель
member имеет вид:member(X, [2, 3, 4, 5])?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предикатов intersection([], _, []).
intersection([A | L1], L2, [A | L]) :- member(A, L2), !, intersection(L1, L2, L).
intersection([_ | L1], L2, L) :- intersection(L1, L2, L).
member(X, [X | _]):- !.
member(X, [_ | L]):- member(X, L).
Какое решение имеет цель
intersection и member имеет вид:
intersection([3, 2, 1], [1, 3, 5], L) ?
(1) [1, 3]
(2) [3, 1]
(3) [3, 2, 1, 5]
(4) [1, 2, 3, 5]
Программа имеет вид:
parent(ann, peter).
parent(ann, mary).
parent(tom, X) :- parent(ann, X).
Сколько решений имеет цель
parent(tom, X)?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предикатов count(t(X, L), Z):- count1(L, Y), Z = Y + X.
count1([], 0).
count1([T | L], Z):- count(T, X), count1(L, Y), Z = X + Y.
Какое значение примет переменная S в результате вызова цели
count и count1 имеет вид:
count(t(1, [t(2, [t(2, [])]), t(1, [])]), S) ?
(1) 1
(2) 3
(3) 5
(4) 6
Вне имплементации класса
b могут вызываться предикаты, объявленные:
(1) в имплементации класса
b
(2) в имплементации класса
b
(3) в декларации класса
b и в имплементации класса b
(4) в имплементации класса-наследника
В результате вызова цели
S = frontChar(toLowerCase(trim(" ДА "))) переменная S примет значение
(1)
'д'
(2)
'Д'
(3) не примет никакого значения
(4)
' ' Определение предикатов
friend(person(ann, 19), phone(1112233)).
friend(person(bob, 18), phone(1112233)).
friend(person(kate, 19), phone(4445566)).
h(X) :- friend(person(X, 19), _), friend(person(Y, 18), _), X > Y.
Напишите ответ на запрос h(X):
friend и h имеет вид:
(1)
bob
(2)
19
(3)
kate
(4)
person Определение предикатa digit(0).
digit(1):- !.
digit(2).
Сколько решений имеет цель
digit имеет вид:digit(X), digit(Y), !, digit(Z)?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предиката print() :- repeat(), write('a'), !.
print().
Сколько раз будет напечатан символ 'a' при вызове цели
print имеет вид:print()?
(1) ни одного раза
(2) один раз
(3) два раза
(4) более двух раз
Определение предиката f(0, 3):- !.
f(X, R):- X1 = X - 1, f(X1, R1), R = R1 + 2.
Какое значение примет переменная Y в результате вызова цели
f имеет вид:
f(2, Y)?
(1) 3
(2) 5
(3) 7
(4) 8
Определение предиката member2(H, [_, H | _]):- !.
member2(H, [_, _ | T]) :- member2(H, T).
Сколько решений имеет цель
member2 имеет вид:member2(X, [1, 2, 3, 4])?
(1) 1
(2) 2
(3) 3
(4) 4
Предикат сортировки списка
list::sort в языке Visual Prolog определяется с помощью алгоритма сортировки
(1) слиянием
(2) быстрой
(3) вставками
(4) пузырьком
Отношение likes определяется следующим образом:likes(bob, X) :- likes(ann, X).
likes(ann, books).
likes(tom, ann).
Укажите весь набор значений, которые примет переменная
X в результате вычисления запроса likes(_, X)?
(1)
books
(2)
books; ann
(3)
books; books; ann
(4)
bob; ann; tom Выберите из списка терм и соответствующий ему домен:
(1) 1, 3
(2) 2, 4
(3) 1, 4
(4) 2, 3
В языке Visual Prolog классы могут порождать объекты
(1) тогда и только тогда, когда они имеют интерфейс
(2) когда они не имеют интерфейса
(3) независимо от того, имеют они интерфейс или нет
(4) классы не могут порождать объекты в Visual Prolog
Определение предикатов pet(h(C, N, Pt, D, S), P) = h(C, N, P, D, S):- unif(Pt, P).
unif(X, Y):- X = empty, !; Y = X.
Вызов
pet и unif имеет вид:<…>, House = pet(h(empty, empty, Pt, empty, empty), P) успешен
(1) только если
P = Pt
(2) если
Pt = empty или P = Pt
(3) только если
Pt = empty
(4) всегда
Определение предиката
p([parent(robert, jackson)]).
p([parent(ann, smith), parent(thomas, smith)]).
Напишите ответ на запрос
p имеет вид:p([_, parent(_, X)]):
(1)
smith
(2)
robert
(3)
thomas
(4)
jackson Определение предикатa color(red).
color(yellow).
color(yellow) :- !.
color(green).
Цель
color имеет вид:findall(X, color(X), L) имеет решение:
(1)
L = [red]
(2)
L = [red, yellow]
(3)
L = [red, yellow, yellow]
(4)
L = [red, yellow, green] Определение предикатов fruit(1, apple).
fruit(2, pear).
print() :- repeat(), fruit(N, X), write(X), nl, fruit(K, Y), write(Y), nl, N < K, !.
print().
Сколько названий фруктов будет напечатано при вызове цели
fruit и print имеет вид:print()?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката g имеет вид:
g(0, R, R):- !.
g(X, C, R):- X1 = X - 1, C1 = C * 2, g(X1, C1, R).
Какое значение примет переменная
Y в результате вызова цели g(2, 3, Y)?
(1) 12
(2) 24
(3) 18
(4) 10
Определение предиката append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
Какое значение примет переменная L в результате вызова
append имеет вид:append([1, 2], [2, 3], L)?
(1) [1, 2, 3]
(2) [1, 3]
(3) [1, 2, 2, 3]
(4) []
Цель
L = list::map([-1, 2, -3], {(X) = -X}) имеет решение:
(1) [-1, -2, -3]
(2) [2]
(3) [1, -2, 3]
(4) [-1, -3]
Определение отношения parent имеет вид
parent(ann, tom).
parent(bob, ann).
Обратное отношение к отношению parent можно определить следующим образом:
(1)
child(X, Y) :- parent(Y, X)
(2)
child(X, Y) :- parent(X, Z), parent(Z, Y)
(3)
child(X, Y) :- parent(X, Y)
(4)
child(X, Y) :- parent(X, Y); parent(Y, X) Какое значение примет переменная
X в результате вызова цели X = math::restrict(3, 0, 1)?
(1) 1
(2) 0
(3) 3
(4) не примет никакого значения
Определение класса interface b
properties a : integer.
end interface b
class b : b
predicates counter : () -> integer.
end class b
implement b
facts a : integer := 0.
class facts n : integer := 0.
clauses new():- n := n + 1.
counter() = n.
end implement b
Какое число будет напечатано в результате вызова цели
b с интерфейсом b имеет вид:X = b::new(), X:a := 2, Y = b::new(), Y:a := X:a + 1, stdio::write(X:a+Y:a+b::counter())?
(1) 0
(2) 7
(3) 5
(4) 3
Определение предиката member(H, [H | _]).
member(H, [_ | T]):- member(H, T).
Цель
member в PIE имеет вид:L = [_, _], member(1, L) имеет в PIE следующий набор решений:
(1)
L = [1, _]; L = [_, 1]
(2)
L = [1]
(3)
Эта цель не имеет решений
(4)
L = [1, 1] Определение предикатов
male(peter).
male(bob).
likes(peter, bycicle).
Напишите решение для цели
likes и male выглядит следующим образом:
male(Y), not(likes(Y, _)):
(1)
peter
(2)
bob
(3)
bycicle Предикаты digit(0).
digit(1).
triple(t(X, Y, Z)) :- digit(X), digit(Y), digit(Z).
Цель имеет вид:
digit и triple определяются следующим образом:findall(T, triple(T), L). Сколько элементов содержит список L?
(1) 2
(2) 3
(3) 8
(4) 9
Начальное значение факта-переменной n равно 0. Определение предикатов fruit(1, "apple").
fruit(2, "pear").
print() :- repeat(), fruit(_, X), n := n + 1, write(X), nl, n = 4, !.
print().
Напишите название фрукта, которое будет напечатано последним при вызове цели
fruit и print имеет вид:print():
(1)
apple
(2)
pear Определение функции f имеет вид:
f(0, R) = R:- !.
f(X, C) = f(X - 2, C * C).
Какое значение примет переменная
Y в результате вызова цели Y = f(4, 2)?
(1) 0
(2) 4
(3) 8
(4) 16
Определение предиката append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
Какое значение примет переменная L в результате вызова
append имеет вид:append(L, [_, 2], [1, 2, 3])?
(1) [1]
(2) [1, 2]
(3) [3]
(4) не примет никакого значения
Определение предикатов arc(1, 2).
arc(1, 3).
arc(3, 4).
conn(X, X).
conn(X, Z):- arc(X, Y), conn(Y, Z).
Сколько решений имеет цель
arc и conn имеет вид:
conn(1, X) ?
(1) 1
(2) 2
(3) 3
(4) 4
Отношение likes определяется в виде:
likes(bob, X) :- likes(ann, X).
likes(ann, books).
likes(tom, ann).
Вариантом правила
likes(bob, X) :- likes(ann, X) является правило
(1)
likes(tom, X) :- likes(ann, X)
(2)
likes(bob, Z) :- likes(ann, Z)
(3)
likes(bob, books) :- likes(ann, books)
(4)
likes(Z, X) :- likes(Y, X) В результате вызова
S = string::concat("ab", "bc") переменная S примет значение:
(1)
"abc"
(2)
"ac"
(3)
"abbc"
(4)
"a" Если пространство состояний моделируется в виде графа, то обычно:
(1) состояниям соответствуют вершины, а переходам между ними ребра
(2) состояниям соответствуют ребра, а переходам между ними вершины
(3) состояниям и переходам между ними соответствуют ребра
(4) состояниям и переходам между ними соответствуют вершины
Определение предиката conc(d(A, B), d(B, C), d(A, C)). В результате вызова
conc в PIE имеет вид:conc(d([1, 2 | X], X), d([2, 3], []), d(L, _)) переменная L примет значение
(1)
[1]
(2)
[1, 2, 2, 3]
(3)
[1, 2, _]
(4)
[1, 3] Определение предикатов
male(tom).
male(bob).
parent(tom, mary).
parent(tom, ann).
Одинаковое ли количество решений имеют цели
male и parent имеет вид:male(X), parent(X, _) и male(X), not(not(parent(X, _))):
(1) одинаковое
(2) не одинаковое
(3) одна из этих целей не имеет смысла в Прологе
(4) одна из этих целей не имеет решений
Определение предиката digit(0).
digit(1). В каком порядке будут найдены решения для цели
digit имеет вид:digit(X), digit(Y)?
(1) 1, 2, 3, 4
(2) 1, 3, 4, 2
(3) 1, 2, 4, 3
(4) 1, 3, 2, 4
Добавляет факт в начало внутренней базы данных предикат:
(1)
assert
(2)
asserta
(3)
save
(4)
assertz Определение предиката num(X, X).
num(X, Y) :- X < 2, X1 = X + 1, num(X1, Y).
Сколько решений имеет цель
num имеет вид:
num(-1, X)?
(1) 2
(2) 3
(3) 4
(4) 5
Определение предиката reverse([], L, L).
reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L).
В результате вызова
reverse имеет вид:reverse([1, 2], [3], L) переменная L примет значение
(1) [3, 2, 1]
(2) [2, 1, 3]
(3) не примет никакого значения
(4) [1, 2, 3]
Определение предикатов arc(1, 3).
arc(3, 4).
path([X | L], X, [X | L]).
path([X | L], Y, P):- arc(X, Z), not(isMember(Z, L)), path([Z, X | L], Y, P).
Предикат path реализует алгоритм
arc и path имеет вид:
(1) поиска в глубину
(2) поиска в ширину
(3) поиска кратчайшего пути в глубину
(4) «первый лучший»
Эрбранов универсум логической программыlikes(bob, X) :- likes(ann, X).
likes(ann, books).
выглядит следующим образом:
(1)
{bob, ann, books, likes(bob, books), likes(ann, books)}
(2)
{bob, ann, books}
(3)
{likes(bob, books), likes(ann, books)}
(4)
{bob, ann, books, X} В результате вызова
string::splitStringBySeparators(" 12-30+15", "+-", X, Y, Z) переменные X, Y и Z примут значения:
(1)
X = "12", Y = '-', Z = "30+15"
(2)
X = " 12", Y = '-', Z = "30+15"
(3)
X = " 12-30", Y = '+', Z = "15"
(4)
X = "12-30", Y = '+', Z = "15" Отметьте верное утверждение. Поиск в глубину на графе пространства состояний обычно используется:
(1) если пространство состояний очень велико
(2) для поиска кратчайших путей
(3) если пространство состояний не слишком велико
(4) если другими способами найти решение не удается
В результате вызова в PIE цели
functor(Term, person, 2), arg(1, Term, bob) переменная Term примет значение
(1)
person(bob, _)
(2)
person(bob)
(3)
person(_, bob)
(4)
person(bob, bob) Сколько элементов содержит список [[1, 2], [2, 3]]?
(1) 4
(2) 3
(3) 2
(4) 1
Определение предикатов parent("Mary", "Bob").
parent("Mary", "Tom").
parent("Ann", "Mary").
grandparent(X, Y):- parent(X, Z), parent(Z, Y).
run():- grandparent(X, Y), write(X, " - ", Y), nl, fail; _ = readLine().
Предикат
parent, grandparent и run имеет вид:parent объявлен в разделе class predicates. Укажите правильное объявление:
(1)
parent: (string, string) nondeterm (o,o) (i,o) (o,i) (i,i).
(2)
parent: (string, string) determ.
(3)
parent: (string, string) multi (o,o) nondeterm (i,o).
(4)
parent: (string, string) nondeterm (o,o). Укажите все предикаты, которые используются для удаления фактов из внутренней базы данных:
(1)
retract
(2)
retractAll
(3)
reconsult
(4)
retractFactDb Определение предиката num(X, _, X).
num(X, C, Y) :- X > 0, X1 = X - C, num(X1, C, Y).
Сколько решений имеет цель
num имеет вид:
num(3, 2, X)?
(1) 2
(2) 3
(3) 4
(4) 5
Определение предиката prefix(_, []).
prefix([A | L1], [A | L2]) :- prefix(L1, L2).
Сколько решений имеется для цели
prefix имеет вид:refix([1, 2], L)?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предикатов arc(1, 2).
arc(1, 3).
arc(3, 4).
arc(2, 4).
cont([X | L], [Z, X | L]):- arc(X, Z), not(isMember(Z, L)).
path([[Y | L] | _], Y, [Y | L]):- !.
path([P | PL], Y, R):- findall(P1, cont(P, P1), L1), append(PL, L1, PL1),
path(PL1, Y, R).
Укажите решение для цели
arc, cont и path имеет вид:
path([[1]], 4, P) .
(1) [1, 3, 4]
(2) [1, 2, 4]
(3) [4, 2, 1]
(4) [4, 3, 1]
Список
[_] унифицируется:
(1) с любым списком
(2) с пустым списком
(3) со списком [1]
(4) с любым непустым списком
С каким списком не унифицируется список [1, 2]?
(1)
[1, 2 | []]
(2)
[1 | [2]]
(3)
[1 | [2 | []]]
(4)
[[1], [2]] Логическое программирование в узком смысле это:
(1) программирование на хорновских дизъюнктах
(2) описание задачи на некотором логическом языке и ее решение посредством вывода в некоторой формальной системе
(3) набор инструкций определенного алгоритма из логики высказываний
(4) набор инструкций определенного алгоритма из логики предикатов
Определение предиката member(bt(_, X, _), X):- !.
member(bt(L, _, R), X):- member(L, X); member(R, X).
Сколько решений имеет цель
member имеет вид:
member(bt(bt(leaf, 1, leaf), 2, bt(leaf, 3, leaf)), X) ?
(1) 0
(2) 1
(3) 2
(4) 3
Пусть грамматика имеет вид:
d ::= dd | d[a] | [b], где в квадратных скобках написаны терминальные символы. Укажите те из перечисленных ниже слов, которые из нее выводятся:
(1)
a
(2)
ab
(3)
baa
(4)
bbb Выигрышная позиция в игре – это позиция,
(1) в которой игрок выиграет, как бы он ни ходил
(2) в которой игрок выиграет, если знает, как ходить
(3) которая является последней
(4) в которой невозможно проиграть
Свободная переменная унифицируется
(1) только с другой свободной переменной
(2) с любым предикатом
(3) только с простым термом
(4) с любым термом
Динамическое отсечение используется
(1) для предотвращения отката при вычислении отдельных подцелей
(2) так же, как и статическое
(3) вместо статического
(4) для предотвращения отката при вычислении каждой подцели
Вызов предиката
repeat
(1) всегда успешен
(2) всегда неуспешен
(3) может быть как успешным, так и неуспешным
(4) не может быть ни успешным, ни неуспешным
Определение предиката go(N):- N > 1, !, write('a'), N1 = N - 1, go(N1).
go(_).
Сколько раз будет напечатан символ 'a' в результате вызова цели
go имеет вид:
go(5)?
(1) 2
(2) 3
(3) 4
(4) 5
Определение предиката count([], 0).
count([_ | T], N) :- count(T, N1), N = N1 + 1.
Какое значение примет переменная
count имеет вид:R в результате вызова цели count([1, 2, 3], R)?
(1) 1
(2) 2
(3) 3
(4) 0
Определение предиката select(A, [A | L], L).
select(A, [B | L], [B | L1]):- select(A, L, L1), A <> B.
Сколько решений имеет цель
select имеет вид:
select(X, [2, 1, 2], L) ?
(1) 0
(2) 1
(3) 2
(4) 3
Запрос – это
(1) любое правило программы
(2) любой факт
(3) правило без заголовка
(4) правило без тела
Определение предиката count(leaf, 0).
count(bt(leaf, _, leaf), 1):- !.
count(bt(L, _, R), X):- count(L, Y), count(R, Z), X = Y + Z.
Какое значение примет переменная X в результате вызова цели
count имеет вид:
count(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X) ?
(1) 1
(2) 2
(3) 3
(4) 7
В результате вызова
string::frontToken(" 23 + 5", X, Y) переменные X и Y примут значения:
(1)
X = " 2", Y = "3 + 5"
(2)
X = " 23", Y = " + 5"
(3)
X = "23", Y = " + 5"
(4)
X = "23", Y = "+ 5" Напишите значение, которое примет переменная
S в результате вызова цели S = string::replacePart("prolog", 5, 0, "n") :
(1)
prolong
(2)
long
(3)
longpro
(4)
prol Являются унифицируемыми термы
(1)
t(a, r(b, c)) и t(a, b, c)
(2)
t(a, r(b, c)) и t(X, r(Y))
(3)
t(a, r(b, c)) и t(a, X)
(4)
t(a, r(b, c)) и t(X, p(b, c)) Отсечение в программе
min(X, Y, X):- Y > X, !.
min(_, Y, Y).
(1) является зеленым
(2) является красным
(3) является динамическим
(4) не используется при вычислениях
Определение предикатов lang(1, prolog).
lang(2, python).
lang(3, pascal).
print() :- lang(N, L), write(L), nl, fail.
print().
Сколько названий языков будет напечатано при вызове цели
lang и print имеет вид:print()?
(1) 1
(2) 2
(3) 3
(4) 6
Определение предиката go(2):- fail.
go(N):- N > 1, write('a'), N1 = N - 1, go(N1).
go(_).
Сколько раз будет напечатан символ 'a' в результате вызова цели
go имеет вид:
go(4)?
(1) 3
(2) 2
(3) 0
(4) 4
Определение предиката count([H, K | T], C, N) :- C1 = C + H + K, count(T, C1, N).
count([H], C, N) :- C1 = C + H, count(T, C1, N).
count([], N, N).
Какое значение примет переменная
count имеет вид:R в результате вызова цели count([1, 2, 3], 0, R)?
(1) 1
(2) 2
(3) 6
(4) 9
Определение предиката subset(0, [], []):- !.
subset(N, [A | L], [A | S]):- N1 = N - 1, subset(N1, L, S).
subset(N, [_ | L], S):- subset(N, L, S).
Сколько решений имеет цель
subset имеет вид:
subset(2, [1, 2, 3], X) ?
(1) 0
(2) 3
(3) 7
(4) 8
Программа имеет вид:
parent(bob, peter).
parent(ann, peter).
parent(peter, mary).
Напишите значение, которое примет переменная
X при вызове parent(X, mary)?
(1) bob
(2) peter
(3) ann
(4) mary
Определение предикатов tmember(t(X, []), X).
tmember(t(_, TL), X):- member(T, TL), tmember(T, X).
member(T, [T | _]).
member(T, [_ | L]):- member(T, L).
Сколько решений имеет цель
tmember и member имеет вид:
tmember(t(1, [t(2, [t(2, [])]), t(1, [])]), X) ?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !.
scan(_) = [].
Какое значение примет переменная
scan имеет вид:S в результате вызова S = scan(" 20 + 2! ")?
(1)
S = ["20 + 2!"]
(2)
S = ["20", "+", "2!"]
(3)
S = ["20", "+", "2", "!"]
(4)
S = ["2", "0", "+", "2", "!"] Определение предиката subset имеет вид:subset(0, _) = []:- !.
subset(N, [X | L]) = [X | subset(N - 1, L)].
subset(N, [_ | L]) = subset(N, L).
Сколько решений имеет цель
L = subset(2, [1, 2, 3])?
(1) 0
(2) 1
(3) 2
(4) 3
Программа имеет вид:
female(ann).
female(mary).
male(tom).
male(bob).
Укажите порядок нахождения решений для цели male(X); female(X)
1) X = ann
2) X = mary
3) X = tom
4) X = bob
(1) 3, 4, 1, 2
(2) 4, 3, 2, 1
(3) 1, 2, 3, 4
(4) 2, 1, 4, 3
Предикат parent(peter, mary).
parent(mary, ann).
parent(mary, bob). Цель
parent определяется следующим образом:!, parent(X, Y), parent(Y, Z) имеет следующее количество решений:
(1) 0
(2) 1
(3) 2
(4) 3
Определение предикатов fruit(1, apple).
fruit(2, pear).
print() :- fruit(_, X), fruit(_, Y), write(X), nl, write(Y), nl, fail.
print().
Напишите название фрукта, которое будет напечатано третьим в результате вызова цели
fruit и print имеет вид:print():
(1)
apple
(2)
pear Определение предикатов parent(tom, ann).
parent(ann, bob).
anc(X, Y):- parent(X, Y).
anc(X, Z):- parent(X, Z), anc(Z, Y).
Сколько решений имеет цель
parent и anc имеет вид:
anc(tom, X)?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката member2(H, [_, H | _]).
member2(H, [_, _ | T]) :- member2(H, T).
Сколько решений имеет цель
member2 имеет вид:member2(X, [1, 2, 3, 4, 5])?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предикатов difference([], _, []).
difference([A | L1], L2, L) :- member(A, L2), !, difference(L1, L2, L).
difference([A | L1], L2, [A | L]) :- difference(L1, L2, L).
member(X, [X | _]):- !.
member(X, [_ | L]):- member(X, L).
Какое решение имеет цель
difference и member имеет вид:
difference([4, 3, 2, 1], [1, 3, 5], L) ?
(1) [4, 2]
(2) [2, 4]
(3) [3, 1]
(4) [1, 3]
Программа имеет вид:
parent(bob, X):- parent(ann, X).
parent(ann, peter).
parent(peter, mary).
Сколько решений имеет цель
parent(X, peter)?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предикатов count(t(X, L), Z):- count1(L, Y), Z = Y + X.
count1([], 0).
count1([T | _], Z):- count(T, Z).
Какое значение примет переменная
count и count1 имеет вид:
S в результате вызова цели count(t(1, [t(2, [t(2, [])]), t(1, [])]), S) ?
(1) 1
(2) 3
(3) 5
(4) 6
Определение предиката пишется:
(1) в имплементации класса
(2) в декларации класса
(3) в декларации класса и в имплементации класса
(4) в декларации класса-наследника
Признак N присутствует, если в базе данных имеется факт correct(L):- answer(N, 1), not(isMember(N, L)), !, fail; succeed(). Предикат истинен, если
answer(N, 1), и отсутствует, если в ней имеется факт answer(N, 0). Определение предиката correct имеет вид:
(1) имеются все необходимые признаки
(2) имеется признак, которого нет в списке L
(3) нет признаков, которых не было бы в списке L
(4) никаких признаков не обнаружено
Определение предикатов
friend(person(ann, 19), phone(1112233)).
friend(person(bob, 18), phone(1112233)).
friend(person(kate, 19), phone(4445566)).
h(X) :- friend(person(X, _), Z), friend(person(Y, _), Z), X > Y.
Напишите ответ на запрос h(X):
friend и h имеет вид:
(1)
bob
(2)
19
(3)
kate
(4)
person Определение предиката color(red).
color(yellow) :- !.
color(green).
Сколько решений имеет цель
color имеет вид:color(X), color(Y)?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката print() :- write('a'), repeat(), !.
print().
Сколько раз будет напечатан символ 'a' при вызове цели
print имеет вид:print()?
(1) ни одного раза
(2) один раз
(3) два раза
(4) более двух раз
Определение предиката f имеет вид:
f(0, 2):- !.
f(X, R):- X1 = X - 1, f(X1, R1), R = R1 * 3.
Какое значение примет переменная
Y в результате вызова цели f(2, Y)?
(1) 18
(2) 9
(3) 12
(4) 6
Определение предиката member1(H, [H, _ | _]).
member1(H, [_, _ | T]) :- !, member1(H, T).
Сколько решений имеет цель
member1 имеет вид:member1(X, [1, 2, 3, 4, 5])?
(1) 1
(2) 2
(3) 3
(4) 4
Предикат сортировки списка по заданному критерию
list::sortBy в языке Visual Prolog определяется с помощью алгоритма сортировки
(1) быстрой
(2) вставками
(3) слиянием
(4) пузырьком
Отношение likes определяется следующим образом:
likes(ann, books).
likes(tom, ann).
likes(bob, X) :- likes(ann, X).
Укажите весь набор значений, которые примет переменная
X в результате вычисления запроса likes(X, _)?
(1)
ann; tom; bob; ann
(2)
ann; tom; bob
(3)
ann; tom
(4)
ann Выберите из списка терм и соответствующий ему домен:
(1) 1, 3
(2) 2, 4
(3) 1, 4
(4) 2, 3
В языке Visual Prolog предикаты, объявленные в декларации класса
(1) не должны иметь определения
(2) могут быть определены в имплементации любого класса
(3) должны быть определены в той же декларации класса
(4) определяются в имплементации этого же класса
В результате вызова
memberIndex_nd(X, I, [1, 2, 3]) переменные X и I последовательно примут следующие значения:
(1)
X = 1, I = 2
(2)
X = 1, I = 1; X = 2, I = 2; X = 3, I = 3
(3)
X = 1, I = 0; X = 2, I = 1; X = 3, I = 2
(4)
X = 1, I = 0 Определение предиката p имеет вид:
p([father(robert, jackson)]).
p([mother(ann, smith), father(thomas, smith)]).
Напишите ответ на запрос
p([father(_, X) | _]):
(1)
smith
(2)
robert
(3)
thomas
(4)
jackson Определение предикатa color(red):- !.
color(yellow).
color(green).
Цель findall(X, color(X), L) имеет решение:
color имеет вид:
(1)
L = []
(2)
L = [red]
(3)
L = [red, yellow]
(4)
L = [red, yellow, green] Определение предикатов fruit(1, apple).
fruit(2, pear).
print() :- repeat(), fruit(N, X), write(X), nl, fruit(K, Y), write(Y), nl, N > K, !.
print().
Сколько названий фруктов будет напечатано при вызове цели
fruit и print имеет вид:print()?
(1) 2
(2) 3
(3) 4
(4) 5
Определение предиката g(0, R, R):- !.
g(X, C, R):- X1 = X - 1, C1 = 2 * C + 1, g(X1, C1, R).
Какое значение примет переменная
g имеет вид:
Y в результате вызова цели g(2, 2, Y)?
(1) 5
(2) 10
(3) 11
(4) 12
Определение предиката append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
Какое значение примет переменная L в результате вызова
append имеет вид:append([1, 2, 3], [], L)?
(1) [1, 2, 3]
(2) []
(3) не примет никакого значения
(4) [1]
Цель
L = list::filter([-1, 2, -3], {(X):- X < 0}) имеет решение:
(1) [-1, -2, -3]
(2) [2]
(3) [1, -2, 3]
(4) [-1, -3]
Отношение married определяется в виде:
married(tom, mary).
married(bob, ann).
Симметричное замыкание отношения married можно определить следующим образом:
(1)
spouses(X, Y) :- married(X, Y), married(Y, X)
(2)
spouses(X, Y) :- married(X, Y); married(Y, X)
(3)
spouses(X, Y) :- married(X, Z), married(Z, Y)
(4)
spouses(X, Y) :- married(X, Z); married(Y, Z) Какое значение примет переменная
X в результате вызова цели X = math::restrict(2, 0, 3)?
(1) 0
(2) 3
(3) 2
(4) не примет никакого значения
Определение класса interface b
properties a : integer.
end interface b
class b : b
end class b
implement b
facts a : integer := 0.
end implement b
Какое число будет напечатано в результате вызова цели
b с интерфейсом b имеет вид:X = b::new(), X:a := 2, Y = b::new(), Y:a := X:a + 1, stdio::write(X:a+Y:a+5) ?
(1) 0
(2) 7
(3) 10
(4) 8
В результате вызова в PIE цели
L = [[1] | _], L = [_, [], 2] переменная L примет значение
(1)
[[1], 2 | []]
(2)
[[1], _, [], 2]
(3)
не примет никакого значения
(4)
[[1], [], 2] Определение предикатов
married(tom, mary).
female(mary).
female(ann).
Напишите решение для цели
married и female выглядит следующим образом:female(X), not(married(_, X)):
(1)
mary
(2)
ann
(3)
tom Предикаты digit и tuple определяются следующим образом:digit(0).
digit(1).
digit(2).
tuple(t(X, Y)) :- digit(X), digit(Y).
Цель имеет вид:
findall(T, tuple(T), L). Сколько элементов содержит список L?
(1) 2
(2) 3
(3) 8
(4) 9
Начальное значение факта-переменной n равно 0. Определение предикатов fruit(1, "apple").
fruit(2, "pear").
print() :- repeat(), n := n + 1, fruit(_, X), write(X), nl, n = 2, !.
print().
Напишите название фрукта, которое будет напечатано последним при вызове цели
fruit и print имеет вид:print():
(1)
apple
(2)
pear Определение функции f имеет вид:
f(1, R) = R:- !.
f(X, C) = f(X - 3, C * C - 1).
Какое значение примет переменная
Y в результате вызова цели Y = f(7, 2)?
(1) 13
(2) 8
(3) 9
(4) 3
Определение предиката append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
Сколько решений имеет цель
append имеет вид:append(L, [_], [1, 2, 3])?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предикатов arc(1, 2).
arc(1, 3).
arc(3, 4).
conn(X, X).
conn(X, Z):- arc(X, Y), conn(Y, Z).
Сколько решений имеет цель
arc и conn имеет вид:
conn(X, 4) ?
(1) 1
(2) 2
(3) 3
(4) 4
Результат применения подстановки
{X = bob} к формуле f(X, ann, X) равен
(1)
f(bob, ann, X)
(2)
f(X, bob, X)
(3)
f(X, ann, bob)
(4)
f(bob, ann, bob) В результате вызова
S = string::concat("aa", "bb", "cc") переменная S примет значение:
(1)
"abc"
(2)
"aabb"
(3)
"aacc"
(4)
"aabbcc" Состояниям на графе пространства состояний обычно соответствуют:
(1) ребра
(2) вершины
(3) концевые вершины
(4) пути
Определение предиката conc(d(A, B), d(B, C), d(A, C)). В результате вызова
conc в PIE имеет вид:conc(d([1, 2 | X], X), d([2, 3], []), d(L, _)) переменная X примет значение
(1)
[3]
(2)
[1, 2, 2, 3]
(3)
[]
(4)
[2, 3] Определение предикатов male и parent имеет вид:
male(tom).
male(bob).
parent(tom, mary).
parent(tom, ann).
Рассмотрим цели
not(parent(X, _)), male(X) и male(X), not(parent(X, _)). Отметьте правильное утверждение:
(1) они имеют одинаковый набор решений
(2) одна из них имеет два решения, а другая не имеет решений
(3) одна из них имеет решение, а другая не имеет
(4) одна из них имеет два решения, а другая одно решение
Определение предиката digit(1).
digit(0).
В каком порядке будут найдены решения для цели
digit имеет вид:digit(X), digit(Y)?
(1) 1, 2, 3, 4
(2) 1, 2, 4, 3
(3) 2, 4, 1, 3
(4) 2, 4, 3, 1
Укажите все предикаты, которые добавляют факт в конец внутренней базы данных:
(1)
assert
(2)
asserta
(3)
save
(4)
assertz Определение предиката num(X, X).
num(X, Y) :- X > 0, X1 = X - 1, num(X1, Y).
Сколько решений имеет цель
num имеет вид:
num(4, X)?
(1) 2
(2) 3
(3) 4
(4) 5
Определение предиката reverse([], L, L).
reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L).
В результате вызова
reverse имеет вид:reverse([1, 2, 2], [], L) переменная L примет значение
(1) [2, 1, 2]
(2) [1, 2, 2]
(3) [1, 2, 2]
(4) [2, 2, 1]
Определение предикатов arc(1, 2).
arc(1, 3).
arc(3, 4).
path([X | L], X, [X | L]).
path([X | L], Y, P):- arc(X, Z), not(isMember(Z, L)), path([Z, X | L], Y, P).
В результате вызова цели
arc и path имеет вид:
path([1], 4, P) переменная P примет значение:
(1) [4, 3, 2, 1]
(2) [1, 2, 3, 4]
(3) [1, 3, 4]
(4) [4, 3, 1]
Эрбранов базис логической программы
animal(X) :- bird(X).
animal(zebra).
bird(swan).
выглядит следующим образом:
(1)
{animal(swan), bird(swan), animal(zebra), bird(zebra)}
(2)
{swan, zebra}
(3)
{animal(X), bird(X), bird(swan), animal(zebra)}
(4)
{animal(swan), bird(swan), animal(zebra)} В результате вызова
string::splitStringBySeparators("Ау уу!", "!у", X, Y, Z) переменные X, Y и Z примут значения:
(1)
X = "А", Y = 'у', Z = " уу!"
(2)
X = "Ау уу", Y = '!', Z = ""
(3)
X = "Ау", Y = ' ', Z = "уу!"
(4)
X = "Ау", Y = 'у', Z = "уу!" Отметьте верное утверждение. Поиск в ширину на графе пространства состояний обычно используется:
(1) для поиска всех решений, даже если пространство велико
(2) для поиска одного из оптимальных решений
(3) если пространство состояний очень мало
(4) только если не удается найти решение поиском в глубину
В результате вызова в PIE цели
functor(X, book, 2), arg(1, X, melville), arg(2, X, "Moby-Dick") переменная X примет значение
(1)
melville("Moby-Dick")
(2)
book(melville("Moby-Dick"))
(3)
book(melville("Moby-Dick"))
(4)
book(_, melville, "Moby-Dick") Сколько элементов содержит список [[1, 2, 3, 4]]?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предикатов parent("Mary", "Bob").
parent("Mary", "Tom").
parent("Ann", "Mary").
grandparent(X, Y):- parent(X, Z), parent(Z, Y).
run():- grandparent(X, Y), write(X, " - ", Y), nl, fail; _ = readLine().
Укажите правильное объявление предиката
parent, grandparent и run имеет вид:grandparent:
(1)
grandparent: (string, string) nondeterm (o,o) (i,o) (o,i) (i,i).
(2)
grandparent: (string, string) determ.
(3)
grandparent: (string, string) multi (o,o) nondeterm (i,o).
(4)
grandparent: (string, string) nondeterm (o,o). Укажите предикат, который может возвращать сведения из фактов, удаляемых из внутренней базы данных:
(1)
retract
(2)
retractAll
(3)
reconsult
(4)
retractFactDb Определение предиката num(X, _, _, X).
num(X, Z, S, Y) :- X < Z, X1 = X + S, num(X1, Z, S, Y).
Сколько решений имеет цель
num имеет вид:
num(2, 3, 2, X)?
(1) 2
(2) 3
(3) 1
(4) 4
Определение предиката suffix(L, L).
suffix([_ | L1], L2]) :- suffix(L1, L2).
Сколько решений имеется для цели
suffix имеет вид:suffix([], L)?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предикатов arc(1, 3).
arc(3, 4).
cont([X | L], [Z, X | L]):- arc(X, Z), not(isMember(Z, L)).
path([[Y | L] | _], Y, [Y | L]).
path([P | PL], Y, R):- findall(P1, cont(P, P1), L1), append(L1, PL, PL1),
path(PL1, Y, R).
Предикат path реализует алгоритм
arc, cont и path имеет вид:
(1) поиска в глубину
(2) поиска в ширину
(3) поиска кратчайшего пути в глубину
(4) «первый лучший»
Укажите все списки, с которыми унифицируется список
[_, 2 | _]:
(1)
[1, 2, 3, 4]
(2)
[2]
(3)
[5, 2]
(4)
[[1], [2]] Укажите все списки, с которыми унифицируется список [_, _ | _]?
(1)
[[1], [2], [3], [4]]
(2)
[1]
(3)
[1, 2]
(4)
[1, 2, 3]
(5)
[] В основу стандарта языка Пролог положен синтаксис
(1) Visual Prolog
(2) Turbo Prolog
(3) Edinburgh Prolog
(4) Planner
Определение предиката member(bt(leaf, X, leaf), X).
member(bt(L, _, R), X):- member(L, X); member(R, X).
Сколько решений имеет цель
member имеет вид:
member(bt(bt(leaf, 1, leaf), 2, bt(leaf, 3, leaf)), X) ?
(1) 0
(2) 1
(3) 2
(4) 3
Пусть грамматика имеет вид:
d ::= dd | [a]d[a] | [b], где в квадратных скобках написаны терминальные символы. Укажите те из перечисленных ниже слов, которые из нее выводятся:
(1)
aabaa
(2)
aa
(3)
baa
(4)
abba Проигрышная позиция в игре – это позиция,
(1) в которой игрок проиграет, как бы ни ходил его противник
(2) в которой игрок проиграет, если не знает, как ходить
(3) которая является последней в игре
(4) в которой игрок проиграет, если его противник знает, как ходить
Анонимная переменная
(1) принимает определенное значение
(2) принимает любое значение
(3) не принимает никакого значения
(4) принимает значение терма, с которым унифицируется
Отсечение используется:
(1) для поиска всех альтернативных решений
(2) для предотвращения поиска всех решений
(3) для запрета процедуры унификации
(4) для предотвращения отката после достижения цели
Знак
:= используется в языке Visual Prolog для присваивания значений
(1) свободным переменным
(2) связанным переменным
(3) конкретизированным переменным
(4) фактам-переменным
Определение предиката go(N):- write('a'), N > 3, !, N1 = N - 1, go(N1).
go(_).
Сколько раз будет напечатан символ 'a' в результате вызова цели
go имеет вид:
go(5)?
(1) 2
(2) 3
(3) 4
(4) 5
Определение предиката count([], 0).
count([_], 1).
count([_, _ | T], N) :- count(T, N1), N = N1 + 2.
Какое значение примет переменная
count имеет вид:R в результате вызова цели count([1, 2, 3], R)?
(1) 1
(2) 2
(3) 3
(4) 0
Определение предиката select(A, [A | L], L).
select(A, [B | L], [B | L1]):- select(A, L, L1).
Сколько решений имеет цель
select имеет вид:
select(0, L, [1, 2, 3]) ?
(1) 4
(2) 3
(3) 2
(4) 1
Программа на языке Пролог – это последовательность
(1) правил
(2) конъюнктов
(3) логических высказываний
(4) запросов
Определение предиката count(leaf, 0).
count(bt(L, _, _), X):- count(L, Y), X = Y + 1.
Какое значение примет переменная X в результате вызова цели
count имеет вид:
count(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X) ?
(1) 1
(2) 2
(3) 3
(4) 7
В результате вызова
string::frontToken(" f(g( a ))", X, Y) переменные X и Y примут значения:
(1)
X = "f(g(", Y = "a ))"
(2)
X = " f", Y = "(g( a ))"
(3)
X = "f(g(", Y = " a ))"
(4)
X = "f", Y = "(g( a ))" Напишите значение, которое примет переменная
N в результате вызова цели N = string::search("prolog", "o") :
(1)
5
(2)
4
(3)
3
(4)
2 Наибольший общий унификатор термов
t(X, r(a, b), X) и t(X, r(Y, b), b) равен:
(1)
X = a, Y = b
(2)
X = Z, Y = T
(3)
X = Z, Y = a
(4)
Y = a, X = b Программа имеет вид:
male(tom).
male(bob).
Отсечение в запросе
male(X), !, male (Y)
(1) является динамическим
(2) является зеленым
(3) является красным
(4) не используется при вычислении этого запроса
Определение предикатов lang(1, prolog).
lang(2, python) :- !.
lang(3, pascal).
print() :- lang(N, L), write(L), nl, fail.
print().
Сколько названий языков будет напечатано при вызове цели
lang и print имеет вид:print()?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката go(0).
go(N):- N > 0, N1 = N - 1, go(N1), write('a').
Сколько раз будет напечатан символ 'a' в результате вызова цели
go имеет вид:
go(2)?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предиката count([_, H | T], C, N) :- !, C1 = C + H, count(T, C1, N).
count(_, N, N).
Какое значение примет переменная
count имеет вид:R в результате вызова цели count([1, 2, 3], 0, R)?
(1) 1
(2) 2
(3) 3
(4) 6
Определение предиката subset(0, L, [], L):- !.
subset(N, [A | L], [A | S], R):- N1 = N - 1, subset(N1, L, S, R).
subset(N, [A | L], S, [A | R]):- subset(N, L, S, R).
Сколько решений имеет цель
subset имеет вид:
subset(3, [1, 2, 3], X, Y) ?
(1) 1
(2) 3
(3) 7
(4) 8
Программа имеет вид:
parent(bob, peter).
parent(ann, bob).
parent(peter, mary).
Напишите значение, примет переменная
X при вызове parent(ann, X)?
(1) mary
(2) bob
(3) ann
Определение предикатов tmember(t(X, _), X).
tmember(t(_, TL), X):- member(T, TL), tmember(T, X).
member(T, [T | _]):- !.
member(T, [_ | L]):- member(T, L).
Сколько решений имеет цель
tmember и member имеет вид:
tmember(t(1, [t(2, [t(2, [])]), t(1, [])]), X) ?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !.
scan(_) = [].
Какое значение примет переменная
scan имеет вид:S в результате вызова S = scan(" The cat likes it. ")?
(1)
S = ["The cat", "likes", "it", "."]
(2)
S = ["The", "cat", "likes", "it", "."]
(3)
S = ["The", "cat", "likes", "it"]
(4)
S = ["The", "cat", "likes", "it."] В игре «Отгадай числа» первым ходит компьютер. Кто выиграет, если требуется угадать три числа и пользователь загадает числа 4, 1 и 2?
(1) пользователь
(2) это зависит от того, что загадал компьютер
(3) компьютер
(4) заранее нельзя определить
Программа имеет вид:
likes(ann, books).
likes(tom, baseball).
male(tom).
male(bob).
Укажите порядок нахождения решений для цели male(Y); likes(X, Y)
1) Y = bob
2) Y = tom
3) X = tom,Y = baseball
4) X = ann,Y = books
(1) 1, 2, 3, 4
(2) 4, 3, 2, 1
(3) 3, 4, 1, 2
(4) 4. 2, 1, 4, 3
Предикат parent(peter, mary).
parent(mary, ann).
parent(mary, bob).
Цель
parent определяется следующим образом:parent(X, Y), !, parent(Y, Z) имеет следующее количество решений:
(1) 0
(2) 1
(3) 2
(4) 3
Определение предикатов fruit(1, apple).
fruit(2, pear).
print() :- fruit(N, X), fruit(_, Y), write(X), nl, write(Y), nl, N = 2, !.
print().
Напишите название фрукта, которое будет напечатано последним в результате вызова цели
fruit и print имеет вид: print():
(1)
apple
(2)
pear Определение предикатов parent(tom, ann).
parent(ann, bob).
anc(X, Y):- parent(X, Y).
anc(X, Z):- parent(X, Z), anc(Z, Y).
Сколько решений имеет цель
parent и anc имеет вид:
anc(X, ann)?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката member1(H, [H | _]).
member1(H, [_, _ | T]) :- member1(H, T).
Сколько решений имеет цель
member1 имеет вид:member1(X, [1, 2, 3, 4, 5])?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предикатов union([], L, L).
union([A | L1], L2, L) :- member(A, L2), !, union(L1, L2, L).
union([A | L1], L2, [A | L]) :- union(L1, L2, L).
member(X, [X | _]):- !.
member(X, [_ | L]):- member(X, L).
Какое решение имеет цель
union и member имеет вид:
union([4, 3, 2, 1], [1, 3, 5], L) ?
(1) [4, 3, 2, 1, 5]
(2) [4, 2, 5]
(3) [4, 2, 1, 3, 5]
(4) [4, 3, 2, 1, 1, 3, 5]
Программа имеет вид:
parent(bob, peter).
parent(bob, X):- parent(ann, X).
parent(bob, mary).
Сколько решений имеет цель
parent(bob, X)?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предикатов count(t(X, []), X):- !.
count(t(_, L), Y):- count1(L, Y).
count1([], 0).
count1([T | L], Z):- count(T, X), count1(L, Y), Z = X + Y.
Какое значение примет переменная
count и count1 имеет вид:
S в результате вызова цели count(t(1, [t(2, [t(2, [])]), t(1, [])]), S) ?
(1) 1
(2) 3
(3) 5
(4) 6
Объявление домена, который можно использовать в других модулях, пишется:
(1) в имплементации класса
(2) только в декларации класса
(3) в интерфейсе или в декларации класса
(4) только в интерфейсе
Одно из правил, определяющих предикат ask(A, _, [N | _]):- assert(answer(N, A)), fail. Оно соответствует следующему действию:
aks/3, имеет вид:
(1) отменяется запись в базу данных нового факта
(2) в базу данных записывается новый факт и выполняется переход к следующему правилу
(3) в базу данных записывается новый факт, если его там не было
(4) если вычисления дойдут до этого правила, то вызов предиката ask будет неуспешным.
Определение предикатов
friend(person(ann, 19), phone(1112233)).
friend(person(bob, 18), phone(1112233)).
friend(person(kate, 19), phone(4445566)).
h(X) :- friend(person(X, Y), _), friend(person(Z, Y), _), X < Z.
Напишите ответ на запрос h(X):
friend и h имеет вид:
(1)
bob
(2)
kate
(3)
ann
(4)
person Определение предиката color(red):- !.
color(yellow).
color(green).
Сколько решений имеет цель
color имеет вид:color(X), !, color(Y)?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката print() :- fail, repeat(), write('a'), !.
print().
Сколько раз будет напечатан символ 'a' при вызове цели
print имеет вид: print()?
(1) ни одного раза
(2) один раз
(3) два раза
(4) более двух раз
Определение предиката f имеет вид:
f(0, 1):- !.
f(X, R):- X1 = X - 1, f(X1, R1), R = 2 * R1 + 1.
Какое значение примет переменная
Y в результате вызова цели f(2, Y)?
(1) 10
(2) 7
(3) 5
(4) 3
Определение предиката member(H, [H | _]):- !.
member(H, [ _ | T]) :- member(H, T).
Сколько решений имеет цель
member имеет вид:member(X, [1, 2, 3, 4])?
(1) 1
(2) 2
(3) 3
(4) 4
Сложность
O(n log n) имеет алгоритм сортировки
(1) быстрой
(2) вставками
(3) слиянием
(4) пузырьком
Определение предиката
parent(tom, mary).
parent(ann, tom).
Отметьте все решения для цели
parent имеет вид:parent(X, _), parent(_, Y):
(1)
X = tom, Y = mary
(2)
X = tom, Y = tom
(3)
X = tom, Y = ann
(4)
X = ann, Y = mary
(5)
X = ann, Y = ann
(6)
X = ann, Y = tom Выберите из списка терм и соответствующий ему домен:
(1) 1, 3
(2) 2, 4
(3) 1, 4
(4) 2, 3
Отметьте все верные утверждения. В языке Visual Prolog
(1) имеются средства для отладки
(2) нет средств для отладки
(3) можно создавать модули
(4) новые пакеты можно создавать только в GUI-приложениях
Определение предиката middle(nth(I, L), I, L):- I = length(L) div 2. Напишите значение, которое примет переменная
middle имеет вид:X в результате вызова цели middle(X, _, ["bob", "ann", "tom", "bill"]):
(1)
mot
(2)
lom
(3)
tom
(4)
tmo Определение предиката
p([parent(robert, black)]).
p([parent(ann, smith), parent(thomas, smith)]).
Напишите ответ на запрос
p имеет вид:p([parent(X, smith), _]).
(1)
ann
(2)
robert
(3)
black
(4)
thomas Определение предикатa color(red).
color(yellow).
color(green):- !. Цель
color имеет вид:findall(X, color(X), L) имеет решение:
(1)
L = [red]
(2)
L = [red, yellow]
(3)
L = [red, yellow, green]
(4)
L = [green] Определение предикатов fruit(1, apple).
fruit(2, pear).
print() :- repeat(), fruit(N, X), write(X), nl, fruit(K, Y), write(Y), nl, N = K, !.
print().
Сколько названий фруктов будет напечатано при вызове цели
fruit и print имеет вид:print()?
(1) 0
(2) 2
(3) 3
(4) 4
Определение предиката g(0, R, R):- !.
g(X, C, R):- X1 = X - 1, C1 = 3 * C, g(X1, C1, R).
Какое значение примет переменная Y в результате вызова цели
g имеет вид:
g(2, 1, Y)?
(1) 5
(2) 9
(3) 6
(4) 10
Определение предиката append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
Сколько решений имеет цель
append имеет вид:append(L1, L2, [1, 2])?
(1) 0
(2) 1
(3) 2
(4) 3
Цель
L = list::fold([-1, 2, -3], {(X, S) = S + X}, 0) имеет решение:
(1) 6
(2) -2
(3) -4
(4) 0
Определение отношения father (отец) имеет вид:
father(peter, tom).
father(tom, bob).
Отношение grandfather (дедушка) можно определить следующим образом:
(1)
grandfather(X, Y) :- father(X, Y); father(Y, X)
(2)
grandfather(X, Y) :- father(X, _), father(_, Y)
(3)
grandfather(X, Y) :- father(X, Z); father(Z, Y)
(4)
grandfather(X, Y) :- father(X, Z), father(Z, Y) Какое значение примет переменная
X в результате вызова цели X = math::restrict(-1, 0, 3)?
(1) -1
(2) 0
(3) 3
(4) не примет никакого значения
Определение класса interface b
properties a : integer.
end interface b
class b : b
predicates counter : () -> integer.
end class b
implement b
facts a : integer := 0.
class facts n : integer := 0.
clauses new():- n := n + 1, a := 1 - a.
counter() = n.
end implement b
Какое число будет напечатано в результате вызова цели
b с интерфейсом b имеет вид:X = b::new(),Y = b::new(), stdio::write(X:a + Y:a + b::counter())?
(1) 0
(2) 7
(3) 3
(4) 4
Определение предиката p в PIE имеет вид:p(X, X) . В результате вызова
p(Y, Z), p(Z, tom) переменная Y примет значение
(1) не примет никакого значения
(2)
X
(3)
tom
(4)
Z Вызов цели
not(parent(X, _)) завершается успехом, если цель parent(X, _)
(1) имеет хотя бы одно решение
(2) не имеет решений
(3) имеет ровно одно решение
(4) имеет более одного решения
Предикаты digit и tuple определяются следующим образом:digit(0).
digit(1).
digit(2).
tuple(t(X, Y)) :- digit(X), Y = -X.
Цель имеет вид:
findall(T, tuple(T), L). Сколько элементов содержит список L?
(1) 2
(2) 3
(3) 8
(4) 9
Начальное значение факта-переменной fruit(1, "apple").
fruit(2, "pear").
print() :- repeat(), fruit(_, X), write(X), nl, n := n + 1, n = 3, !.
print().
Напишите название фрукта, которое будет напечатано последним при вызове цели
n равно 0. Определение предикатов fruit и print имеет вид:print():
(1)
apple
(2)
pear Определение функции f имеет вид:
f(0, R) = R:- !.
f(X, C) = f(X - 1, C * C - 2).
Какое значение примет переменная
Y в результате вызова цели Y = f(2, 2)?
(1) 4
(2) 14
(3) 2
(4) 0
Определение предиката append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
Найти предпоследний элемент списка
append имеет вид:L = [1, 2, 3, 4, 5] можно с помощью цели
(1) append([_, X], _, L)
(2) append([X, _], _, L)
(3) append(_, [X, _], L)
(4) append(_, [_, X], L)
Определение предикатов arc(1, 2).
arc(1, 3).
arc(3, 4).
conn(X, X).
conn(X, Z):- arc(X, Y), conn(Y, Z).
Сколько решений имеет цель
arc и conn имеет вид:
conn(1, X), conn(X, 4) ?
(1) 1
(2) 2
(3) 3
(4) 4
Отношение likes определяется в виде:
likes(bob, X) :- likes(ann, X).
likes(ann, books).
likes(tom, ann).
Основным примером правила
likes(bob, X) :- likes(ann, X) является правило
(1)
likes(bob, books) :- likes(ann, books)
(2)
likes(tom, X) :- likes(ann, X)
(3)
likes(ann, X) :- likes(bob, X)
(4)
likes(bob, ann) :- likes(ann, books) В результате вызова
string::frontToken(" aa-bbcc", X, _) переменная X примет значение:
(1)
X = "aa-bbcc"
(2)
X = "aa"
(3)
X = " aa"
(4)
X = "a" Если для решения задачи используется граф пространства состояний, то решение является
(1) его вершиной
(2) его ребром
(3) его подграфом
(4) путем, соединяющим начальное состояние с конечным
Определение предиката conc в PIE имеет вид:conc(d(A, B), d(B, C), d(A, C)). В результате вызова
conc(d([1, 2 | X], X), d([2, 3], [4]), d(L, _)) переменная L примет значение
(1)
[1]
(2)
[1, 2, 2, 3, 4]
(3)
[1, 2, 2, 3]
(4)
[1, 4] Определение предикатов male и parent имеет вид:
male(tom).
male(bob).
parent(tom, mary).
parent(ann, tom).
Рассмотрим цели
parent(X, _), not(not(male(X))) и not(not(male(X))), parent(X, _). Отметьте правильное утверждение:
(1) они имеют одинаковый набор решений
(2) одна из них имеет решение, а другая не имеет
(3) одна из них имеет два решения, а другая не имеет решений
(4) одна из них имеет два решения, а другая одно решение
Определение предикатов digit(0).
digit(1).
fruit(apple).
fruit(pear).
В каком порядке будут найдены решения для цели
digit и fruit имеют вид:digit(X), fruit(Y)?
(1) 1, 3, 4, 2
(2) 1, 2, 4, 3
(3) 1, 2, 3, 4
(4) 1, 3, 2, 4
Укажите все предикаты, которые используются для добавления фактов во внутреннюю базу данных:
(1)
assert
(2)
asserta
(3)
save
(4)
assertz Определение предиката num(X, X).
num(X, Y) :- X > 0, X1 = X - 2, num(X1, Y).
Сколько решений имеет цель
num имеет вид:
num(5, X)?
(1) 5
(2) 4
(3) 3
(4) 2
Определение предиката reverse([], L, L).
reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L).
В результате вызова
reverse имеет вид:reverse([1, 2], [3, 4], L) переменная L примет значение
(1) [2, 1, 3, 4]
(2) [4, 3, 2, 1]
(3) не примет никакого значения
(4) [2, 1, 4, 3]
Определение предикатов arc(1, 2).
arc(1, 3).
arc(2, 4).
arc(3, 4).
path([X | L], X, [X | L]).
path([X | L], Y, P):- arc(X, Z), not(isMember(Z, L)), path([Z, X | L], Y, P).
Сколько решений имеет цель
arc и path имеет вид:
path([1], 4, P) ?
(1) 1
(2) 2
(3) 3
(4) 4
Декларативное значение логической программы
animal(X) :- bird(X).
animal(zebra).
bird(swan).
Имеет вид:
(1)
{animal(swan), bird(swan), animal(zebra), bird(zebra)}
(2)
{swan, zebra}
(3)
{animal(X), bird(X), bird(swan), animal(zebra)}
(4)
{animal(swan), bird(swan), animal(zebra)} В результате вызова
S = string::concatWithDelimiter(["1", "000", "000"], ".") переменная S примет значение:
(1)
["1", ".", "000", ".", "000"]
(2)
"1.000.000."
(3)
"1000000."
(4)
"1.000.000" Отметьте верное утверждение. Состояние в задаче о перевозке через реку полностью описывается парой, содержащей
(1) множества существ на одном берегу и на другом
(2) множества существ на одном из берегов и в лодке
(3) множество существ в лодке и местоположение лодки
(4) множество существ на левом берегу и местоположение лодки
В результате вызова в PIE цели
functor(F, animal, 1), functor(B, bird, 1), arg(1, F, B), arg(1, B, swan) переменная F примет значение
(1)
bird(swan)
(2)
animal(bird(swan))
(3)
animal(bird(_, swan))
(4)
animal(bird, swan) Сколько элементов содержит список [[], [], [1], [1, 2], [1, 2, 3, 4]]?
(1) 7
(2) 4
(3) 3
(4) 5
Определение предикатов min(X, Y, X):- X < Y, !.min(X, Y, Y):- X >= Y.
run():- min(1, 3, X), write(X), nl, fail; _ = readLine().
Укажите правильное объявление предиката
min и run имеет вид:min:
(1)
min: (integer, integer, integer) nondeterm (i,i,o).
(2)
min: (integer, integer, integer [out]) determ.
(3)
min: (integer, integer, integer) determ.
(4)
min: (integer, integer, integer) determ anyflow. Укажите предикат, который удаляет все записи из внутренней базы данных:
(1)
retract
(2)
retractAll
(3)
reconsult
(4)
retractFactDb Определение предиката num(X, _, _, X).
num(X, Z, S, Y) :- X > Z, X1 = X - S, num(X1, Z, S, Y).
Сколько решений имеет цель
num имеет вид:
num(5, 3, 1, X)?
(1) 1
(2) 2
(3) 3
(4) 4
Определение предиката prefix(_, []).
prefix([A | L1], [A | L2]) :- prefix(L1, L2).
Сколько решений имеется для цели
prefix имеет вид:prefix([1], L)?
(1) 0
(2) 1
(3) 2
(4) 3
Определение предикатов arc(1, 3).
arc(3, 4).
cont([X | L], [Z, X | L]):- arc(X, Z), not(isMember(Z, L)).
path([[Y | L] | _], Y, [Y | L]).
path([P | PL], Y, R):- findall(P1, cont(P, P1), L1), append(PL, L1, PL1),
path(PL1, Y, R).
Предикат path реализует алгоритм
arc, cont и path имеет вид:
(1) поиска в глубину
(2) поиска в ширину
(3) поиска кратчайшего пути в глубину
(4) «первый лучший»
Список
[_, _] унифицируется:
(1)
со списком [[1], [2]]
(2)
с пустым списком
(3)
с любым списком
(4)
с любым непустым списком В результате унификации списков [1, 2, 3] и [X, Y | Z] переменные получат значения
(1)
X = 1, Y = 2, Z = 3
(2)
X = 1, Y = [2], Z = 3
(3)
X = 1, Y = 2, Z = [3]
(4)
X = 1, Y = [2], Z = [3]