Основы программирования на языке Visual Prolog - ответы
Количество вопросов - 246
male(tom).male(bob).parent(ann, tom).Укажите порядок нахождения решений для цели
parent(X, Y); male(Y) 1) Y = tom 2) Y = bob 3) X = ann,Y = tom
reverse([], L, L).reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L).В результате вызова reverse([1, 2], [3, 4], L) переменная L примет значение
print() :- fail, repeat(), write('a'), !.print().Сколько раз будет напечатан символ 'a' при вызове цели print()?
p(X, X). В результате вызова p(Y, Z), p(Z, tom) переменная Y примет значение
member1(H, [H, _ | _]).member1(H, [_, _ | T]) :- !, member1(H, T).Сколько решений имеет цель member1(X, [1, 2, 3, 4, 5])?
digit(0).digit(1).В каком порядке будут найдены решения для цели digit(X), digit(Y)?
arc(1, 2).arc(1, 3).arc(3, 4).conn(X, X).conn(X, Z):- arc(X, Y), conn(Y, Z).Сколько решений имеет цель conn(1, X) ?
color(red).color(yellow).color(green):- !.Цель findall(X, color(X), L) имеет решение:
tmember(t(X, []), X).tmember(t(_, TL), X):- member(T, TL), tmember(T, X).member(T, [T | _]).member(T, [_ | L]):- member(T, L).Сколько решений имеет цель tmember(t(1, [t(2, [t(2, [])]), t(1, [])]), X) ?
member1(H, [H | _]).member1(H, [_, _ | T]) :- member1(H, T).Сколько решений имеет цель member1(X, [1, 2, 3, 4, 5])?
married(tom, mary).married(bob, ann).Симметричное замыкание отношения married можно определить следующим образом:
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(t(1, [t(2, [t(2, [])]), t(1, [])]), S) ?
count([H | T], C, N) :- C1 = C + H, count(T, C1, N).count([], N, N).Какое значение примет переменная R в результате вызова цели count([2, 3, 4], 0, R)?
likes(bob, X) :- likes(ann, X).likes(ann, books).likes(tom, ann).Вариантом правила likes(bob, X) :- likes(ann, X) является правило
fruit(1, apple).fruit(2, pear).print() :- repeat(), fruit(N, X), write(X), nl, fruit(K, Y), write(Y), nl, N > K, !.print().Сколько названий фруктов будет напечатано при вызове цели print()?
fruit(1, "apple").fruit(2, "pear"). print() :- repeat(), n := n + 1, fruit(_, X), write(X), nl, n = 2, !.print().Напишите название фрукта, которое будет напечатано последним при вызове цели print():
f(0, R) = R:- !.f(X, C) = f(X - 1, C * C - 2).Какое значение примет переменная Y в результате вызова цели Y = f(2, 2)?
parent(bob, peter).parent(ann, peter).parent(peter, mary).Напишите значение, которое примет переменная X при вызове parent(X, mary)?
count([_, _ | T], N) :- !, count(T, N1), N = N1 + 1.count(_, 1).Какое значение примет переменная R в результате вызова цели count([1, 2, 3], R)?
middle(nth(I, L), I, L):- I = length(L) div 2.Напишите значение, которое примет переменная X в результате вызова цели middle(X, _, ["bob", "ann", "tom", "bill"]):
parent(bob, X):- parent(ann, X).parent(ann, peter).parent(peter, mary).Сколько решений имеет цель parent(X, peter)?
likes(bob, X) :- likes(ann, X).likes(ann, books).likes(tom, ann).Укажите весь набор значений, которые примет переменная X в результате вычисления запроса likes(_, X)?
father(peter, tom). father(tom, bob).Отношение grandfather (дедушка) можно определить следующим образом:
animal(X) :- bird(X).animal(zebra).bird(swan).Имеет вид:
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
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):
p([parent(robert, black)]).p([parent(ann, smith), parent(thomas, smith)]).Напишите ответ на запрос p([parent(X, smith), _]).
married(tom, mary).female(mary).female(ann).Напишите решение для цели female(X), not(married(_, X)):
male(tom).male(bob).parent(tom, mary).parent(ann, tom).Рассмотрим цели parent(X, _), not(not(male(X))) и not(not(male(X))), parent(X, _). Отметьте правильное утверждение:
parent(peter, mary).parent(mary, ann).parent(mary, bob).Цель !, parent(X, Y), parent(Y, Z) имеет следующее количество решений:
color(red):- !.color(yellow).color(green).Сколько решений имеет цель color(X), !, color(Y)?
digit(0).digit(1).digit(2).tuple(t(X, Y)) :- digit(X), digit(Y).Цель имеет вид: findall(T, tuple(T), L). Сколько элементов содержит список L?
digit(1).digit(0).В каком порядке будут найдены решения для цели digit(X), digit(Y)?
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().Укажите правильное объявление предиката grandparent:
lang(1, prolog).lang(2, python).lang(3, pascal).print() :- lang(N, L), write(L), nl, N = 2, !.print().Сколько названий языков будет напечатано при вызове цели print()?
fruit(1, apple).fruit(2, pear).print() :- fruit(_, X), fruit(_, Y), write(X), nl, write(Y), nl, fail.print().Напишите название фрукта, которое будет напечатано третьим в результате вызова цели print():
print() :- repeat(), write('a'), !.print().Сколько раз будет напечатан символ 'a' при вызове цели print()?
fruit(1, apple).fruit(2, pear).print() :- repeat(), fruit(N, X), write(X), nl, fruit(K, Y), write(Y), nl, N = K, !.print().Сколько названий фруктов будет напечатано при вызове цели print()?
fruit(1, "apple").fruit(2, "pear"). print() :- repeat(), fruit(_, X), n := n + 1, write(X), nl, n = 4, !.print().Напишите название фрукта, которое будет напечатано последним при вызове цели print():
go(N):- write('a'), N > 3, !, N1 = N - 1, go(N1).go(_).Сколько раз будет напечатан символ 'a' в результате вызова цели go(5)?
go(2):- fail.go(N):- N > 1, write('a'), N1 = N - 1, go(N1).go(_).Сколько раз будет напечатан символ 'a' в результате вызова цели go(4)?
parent(tom, ann).parent(ann, bob).anc(X, Y):- parent(X, Y).anc(X, Z):- parent(X, Z), anc(Z, Y).Сколько решений имеет цель anc(X, Y)?
f(0, 2):- !.f(X, R):- X1 = X - 1, f(X1, R1), R = R1 * 3.Какое значение примет переменная Y в результате вызова цели f(2, Y)?
g(0, R, R):- !.g(X, C, R):- X1 = X - 1, C1 = C * 2, g(X1, C1, R).Какое значение примет переменная Y в результате вызова цели g(2, 3, Y)?
f(0, R) = R:- !.f(X, C) = f(X - 2, C * C).Какое значение примет переменная Y в результате вызова цели Y = f(4, 2)?
num(X, X).num(X, Y) :- X > 0, X1 = X - 1, num(X1, Y).Сколько решений имеет цель num(4, X)?
num(X, _, _, X).num(X, Z, S, Y) :- X > Z, X1 = X - S, num(X1, Z, S, Y).Сколько решений имеет цель num(5, 3, 1, X)?
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).Какое значение примет переменная R в результате вызова цели count([1, 2, 3], 0, R)?
member2(H, [_, H | _]).member2(H, [_, _ | T]) :- member2(H, T).Сколько решений имеет цель member2(X, [1, 2, 3, 4, 5])?
member(H, [H | _]):- !.member(H, [ _ | T]) :- member(H, T).Сколько решений имеет цель member(X, [1, 2, 3, 4])?
append([], L, L).append([A | L1], L2, [A | L]) :- append(L1, L2, L).Сколько решений имеет цель append(L1, L2, [1, 2])?
append([], L, L).append([A | L1], L2, [A | L]) :- append(L1, L2, L).Сколько решений имеет цель append(L, [_], [1, 2, 3])?
reverse([], L, L).reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L).В результате вызова reverse([1, 2], [3], L) переменная L примет значение
suffix(L, L).suffix([_ | L1], L2]) :- suffix(L1, L2).Сколько решений имеется для цели suffix([], L)?
select(A, [A | L], L).select(A, [B | L], [B | L1]):- select(A, L, L1), A <> B.Сколько решений имеет цель select(X, [2, 1, 2], L) ?
subset([], []).subset([A | L], [A | S]):- subset(L, S).subset([_ | L], S):- subset(L, S).Сколько решений имеет цель subset([1, 2, 3], X) ?
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([4, 3, 2, 1], [1, 3, 5], L) ?
arc(1, 2).arc(1, 3).arc(3, 4).conn(X, X).conn(X, Z):- arc(X, Y), conn(Y, Z).Сколько решений имеет цель conn(1, X), conn(X, 4) ?
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).В результате вызова цели path([1], 4, P) переменная P примет значение:
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 реализует алгоритм
member(bt(leaf, X, leaf), X).member(bt(L, _, R), X):- member(L, X); member(R, X).Сколько решений имеет цель member(bt(bt(leaf, 1, leaf), 2, bt(leaf, 3, leaf)), X) ?
count(leaf, 0).count(bt(leaf, _, leaf), 1):- !.count(bt(L, _, R), X):- count(L, Y), count(R, Z), X = Y + Z.Какое значение примет переменная X в результате вызова цели count(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X) ?
count(t(X, L), Z):- count1(L, Y), Z = Y + X.count1([], 0).count1([T | _], Z):- count(T, Z).Какое значение примет переменная S в результате вызова цели count(t(1, [t(2, [t(2, [])]), t(1, [])]), S) ?
scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !. scan(_) = [].Какое значение примет переменная S в результате вызова S = scan("f(g(1)).")?
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Какое число будет напечатано в результате вызова цели X = b::new(),Y = b::new(), stdio::write(X:a + Y:a + b::counter())?
subset(0, _) = []:- !.subset(N, [X | L]) = [X | subset(N - 1, L)].subset(N, [_ | L]) = subset(N, L).Сколько решений имеет цель L = subset(2, [1, 2, 3])?
pet(h(C, N, Pt, D, S), P) = h(C, N, P, D, S):- unif(Pt, P). unif(X, Y):- X = empty, !; Y = X.Вызов <…>, House = pet(h(empty, empty, Pt, empty, empty), P) успешен
conc(d(A, B), d(B, C), d(A, C)).В результате вызова conc(d([1, 2 | X], X), d([2, 3], [4]), d(L, _)) переменная L примет значение
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):
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([4, 3, 2, 1], [1, 3, 5], L) ?
g(0, R, R):- !.g(X, C, R):- X1 = X - 1, C1 = 3 * C, g(X1, C1, R).Какое значение примет переменная Y в результате вызова цели g(2, 1, Y)?
parent(tom, mary). parent(ann, tom).Отметьте все решения для цели parent(X, _), parent(_, Y):
select(A, [A | L], L).select(A, [B | L], [B | L1]):- select(A, L, L1).Сколько решений имеет цель select(X, [1, 2, 2], L) ?
append([], L, L).append([A | L1], L2, [A | L]) :- append(L1, L2, L).Какое значение примет переменная L в результате вызова append([1, 2, 3], [], L)?
parent(ann, tom). parent(bob, ann).Обратное отношение к отношению parent можно определить следующим образом:
f(0, 1):- !.f(X, R):- X1 = X - 1, f(X1, R1), R = 2 * R1 + 1.Какое значение примет переменная Y в результате вызова цели f(2, Y)?
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).Укажите решение для цели path([[1]], 4, P) .
interface b properties a : integer. end interface b class b : b end class b implement b facts a : integer := 0. end implement bКакое число будет напечатано в результате вызова цели X = b::new(), X:a := 2, Y = b::new(), Y:a := X:a + 1, stdio::write(X:a+Y:a+5) ?
parent(bob, peter).parent(bob, X):- parent(ann, X).parent(bob, mary).Сколько решений имеет цель parent(bob, X)?
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):
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(3, [1, 2, 3], X, Y) ?
fruit(1, apple).fruit(2, pear).print() :- repeat(), fruit(N, X), write(X), nl, fruit(K, Y), write(Y), nl, N < K, !.print().Сколько названий фруктов будет напечатано при вызове цели print()?
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 реализует алгоритм
member(bt(_, X, _), X).member(bt(L, _, R), X):- member(L, X); member(R, X).Сколько решений имеет цель member(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X)?
tmember(t(X, _), X).tmember(t(_, TL), X):- member(T, TL), tmember(T, X).member(T, [T | _]).member(T, [_ | L]):- member(T, L).Сколько решений имеет цель tmember(t(1, [t(2, [t(2, [])]), t(1, [])]), X) ?
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 объявлен в разделе class predicates. Укажите правильное объявление:
digit(0).digit(1):- !.digit(2).Сколько решений имеет цель digit(X), digit(Y), !, digit(Z)?
scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !. scan(_) = [].Какое значение примет переменная S в результате вызова S = scan(" 20 + 2! ")?
count([_, H | T], C, N) :- !, C1 = C + H, count(T, C1, N).count(_, N, N).Какое значение примет переменная R в результате вызова цели count([1, 2, 3], 0, R)?
count(leaf, 0).count(bt(L, _, _), X):- count(L, Y), X = Y + 1.Какое значение примет переменная X в результате вызова цели count(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X) ?
parent(bob, peter).parent(ann, bob).parent(peter, mary).Напишите значение, примет переменная X при вызове parent(ann, X)?
likes(bob, X) :- likes(ann, X).likes(ann, books).likes(tom, ann).Основным примером правила likes(bob, X) :- likes(ann, X) является правило
p([father(robert, jackson)]).p([mother(ann, smith), father(thomas, smith)]).Напишите ответ на запрос p([father(_, X) | _]):
male(tom).male(bob).parent(tom, mary).parent(tom, ann).Одинаковое ли количество решений имеют цели male(X), parent(X, _) и male(X), not(not(parent(X, _))):
parent(peter, mary).parent(mary, ann).parent(mary, bob).Цель parent(X, Y), !, parent(Y, Z) имеет следующее количество решений:
color(red).color(yellow) :- !.color(green).Сколько решений имеет цель color(X), color(Y)?
lang(1, prolog).lang(2, python).lang(3, pascal).print() :- lang(N, L), write(L), nl, fail.print().Сколько названий языков будет напечатано при вызове цели print()?
print() :- write('a'), repeat(), !.print().Сколько раз будет напечатан символ 'a' при вызове цели print()?
fruit(1, "apple").fruit(2, "pear"). print() :- repeat(), fruit(_, X), write(X), nl, n := n + 1, n = 3, !.print().Напишите название фрукта, которое будет напечатано последним при вызове цели print():
go(2):- !.go(N):- write('a'), N1 = N - 1, go(N1).Сколько раз будет напечатан символ 'a' в результате вызова цели go(5)?
go(0).go(N):- N > 0, N1 = N - 1, go(N1), write('a').Сколько раз будет напечатан символ 'a' в результате вызова цели go(2)?
parent(tom, ann).parent(ann, bob).anc(X, Y):- parent(X, Y).anc(X, Z):- parent(X, Z), anc(Z, Y).Сколько решений имеет цель anc(tom, X)?
f(0, 3):- !.f(X, R):- X1 = X - 1, f(X1, R1), R = R1 + 2.Какое значение примет переменная Y в результате вызова цели f(2, Y)?
num(X, X).num(X, Y) :- X > 0, X1 = X - 2, num(X1, Y).Сколько решений имеет цель num(5, X)?
num(X, _, X).num(X, C, Y) :- X > 0, X1 = X - C, num(X1, C, Y).Сколько решений имеет цель num(3, 2, X)?
count([], 0).count([_ | T], N) :- count(T, N1), N = N1 + 1.Какое значение примет переменная R в результате вызова цели count([1, 2, 3], R)?
member(H, [H | _]).member(H, [_ | T]) :- member(H, T).Сколько решений имеет цель member(X, [2, 3, 4, 5])?
prefix(_, []).prefix([A | L1], [A | L2]) :- prefix(L1, L2).Сколько решений имеется для цели refix([1, 2], L)?
select(A, [A | L], L).select(A, [B | L], [B | L1]):- select(A, L, L1).Сколько решений имеет цель select(0, L, [1, 2, 3]) ?
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([3, 2, 1], [1, 3, 5], L) ?
tmember(t(X, _), X).tmember(t(_, TL), X):- member(T, TL), tmember(T, X).member(T, [T | _]):- !.member(T, [_ | L]):- member(T, L).Сколько решений имеет цель tmember(t(1, [t(2, [t(2, [])]), t(1, [])]), X) ?
ask(A, _, [N | _]):- assert(answer(N, A)), fail.Оно соответствует следующему действию:
count(leaf, 0).count(bt(L, _, R), X):- count(L, Y), count(R, Z), X = Y + Z + 1.Какое значение примет переменная X в результате вызова цели count(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X) ?
likes(mary, books).likes(bob, mary).likes(bob, books).Напишите решение, которое имеет цель likes(X, mary):
prefix(_, []).prefix([A | L1], [A | L2]) :- prefix(L1, L2).Сколько решений имеется для цели prefix([1], L)?
num(X, _, _, X).num(X, Z, S, Y) :- X < Z, X1 = X + S, num(X1, Z, S, Y).Сколько решений имеет цель num(2, 3, 2, X)?
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).Сколько решений имеет цель path([1], 4, P) ?
count([], 0).count([_], 1).count([_, _ | T], N) :- count(T, N1), N = N1 + 2.Какое значение примет переменная R в результате вызова цели count([1, 2, 3], R)?
member(bt(_, X, _), X):- !.member(bt(L, _, R), X):- member(L, X); member(R, X).Сколько решений имеет цель member(bt(bt(leaf, 1, leaf), 2, bt(leaf, 3, leaf)), X) ?
likes(mary, books).likes(peter, mary).likes(mary, peter).Цель likes(X, Y), !, likes(Y, Z) имеет следующее количество решений:
fruit(1, apple).fruit(2, pear).print() :- fruit(_, X), write(X), nl, fruit(_, Y), write(Y), nl, fail.print().Напишите название фрукта, которое будет напечатано третьим в результате вызова цели print():
f(1, R) = R:- !.f(X, C) = f(X - 3, C * C - 1).Какое значение примет переменная Y в результате вызова цели Y = f(7, 2)?
likes(bob, X) :- likes(ann, X).likes(ann, books).выглядит следующим образом:
digit(0).digit(1).triple(t(X, Y, Z)) :- digit(X), digit(Y), digit(Z).Цель имеет вид: findall(T, triple(T), L). Сколько элементов содержит список L?
min(X, Y, X):- X < Y, !.min(X, Y, Y):- X >= Y.run():- min(1, 3, X), write(X), nl, fail; _ = readLine().Укажите правильное объявление предиката min:
num(X, X).num(X, Y) :- X < 2, X1 = X + 1, num(X1, Y).Сколько решений имеет цель num(-1, X)?
append([], L, L).append([A | L1], L2, [A | L]) :- append(L1, L2, L).Какое значение примет переменная L в результате вызова append([1, 2], [2, 3], L)?
append([], L, L).append([A | L1], L2, [A | L]) :- append(L1, L2, L).Найти предпоследний элемент списка L = [1, 2, 3, 4, 5] можно с помощью цели
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 реализует алгоритм
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.Какое значение примет переменная S в результате вызова цели count(t(1, [t(2, [t(2, [])]), t(1, [])]), S) ?
count(L1, L2) = length(filter(L1, {(X):- isMember(X, L2)})).Какое значение примет переменная L в результате вызова цели L = count([1, 2, 3], [3, 2, 5])?
member(H, [H | _]). member(H, [_ | T]):- member(H, T).Цель L = [_, _], member(1, L) имеет в PIE следующий набор решений:
male(peter).male(bob).likes(peter, bycicle).Напишите решение для цели male(Y), not(likes(Y, _)):
color(red):- !.color(yellow).color(green).Цель findall(X, color(X), L) имеет решение:
likes(ann, books).likes(tom, ann).likes(bob, X) :- likes(ann, X).Укажите весь набор значений, которые примет переменная X в результате вычисления запроса likes(X, _)?
member2(H, [_, H | _]):- !.member2(H, [_, _ | T]) :- member2(H, T).Сколько решений имеет цель member2(X, [1, 2, 3, 4])?
parent(tom, ann).parent(ann, bob).anc(X, Y):- parent(X, Y).anc(X, Z):- parent(X, Z), anc(Z, Y).Сколько решений имеет цель anc(X, ann)?
digit(0).digit(1).digit(2).tuple(t(X, Y)) :- digit(X), Y = -X.Цель имеет вид: findall(T, tuple(T), L). Сколько элементов содержит список L?
go(2):- write('a'), fail.go(N):- N > 1, write('a'), N1 = N - 1, go(N1).go(_).Сколько раз будет напечатан символ 'a' в результате вызова цели go(4)?
parent(ann, peter).parent(ann, mary).parent(tom, X) :- parent(ann, X).Сколько решений имеет цель parent(tom, X)?
digit(0).digit(1).fruit(apple).fruit(pear).В каком порядке будут найдены решения для цели digit(X), fruit(Y)?
g(0, R, R):- !.g(X, C, R):- X1 = X - 1, C1 = 2 * C + 1, g(X1, C1, R).Какое значение примет переменная Y в результате вызова цели g(2, 2, Y)?
arc(1, 2).arc(1, 3).arc(3, 4).conn(X, X).conn(X, Z):- arc(X, Y), conn(Y, Z).Сколько решений имеет цель conn(X, 4) ?
scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !. scan(_) = [].Какое значение примет переменная S в результате вызова S = scan(" The cat likes it. ")?
correct(L):- answer(N, 1), not(isMember(N, L)), !, fail; succeed().Предикат истинен, если
female(ann). female(mary). male(tom). male(bob).Укажите порядок нахождения решений для цели
male(X); female(X) 1) X = ann 2) X = mary 3) X = tom 4) X = bob
p([parent(robert, jackson)]).p([parent(ann, smith), parent(thomas, smith)]).Напишите ответ на запрос p([_, parent(_, X)]):
male(tom).male(bob).parent(tom, mary).parent(tom, ann).Рассмотрим цели not(parent(X, _)), male(X) и male(X), not(parent(X, _)). Отметьте правильное утверждение:
fruit(1, apple).fruit(2, pear).print() :- fruit(N, X), fruit(_, Y), write(X), nl, write(Y), nl, N = 2, !.print().Напишите название фрукта, которое будет напечатано последним в результате вызова цели print():
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Какое число будет напечатано в результате вызова цели X = b::new(), X:a := 2, Y = b::new(), Y:a := X:a + 1, stdio::write(X:a+Y:a+b::counter())?
conc(d(A, B), d(B, C), d(A, C)).В результате вызова conc(d([1, 2 | X], X), d([2, 3], []), d(L, _)) переменная X примет значение
reverse([], L, L).reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L).В результате вызова reverse([1, 2, 2], [], L) переменная L примет значение
animal(X) :- bird(X).animal(zebra).bird(swan).выглядит следующим образом:
append([], L, L).append([A | L1], L2, [A | L]) :- append(L1, L2, L).Какое значение примет переменная L в результате вызова append(L, [_, 2], [1, 2, 3])?
color(red).color(yellow).color(yellow) :- !.color(green).Цель findall(X, color(X), L) имеет решение:
go(N):- N > 1, !, write('a'), N1 = N - 1, go(N1).go(_).Сколько раз будет напечатан символ 'a' в результате вызова цели go(5)?
conc(d(A, B), d(B, C), d(A, C)).В результате вызова conc(d([1, 2 | X], X), d([2, 3], []), d(L, _)) переменная L примет значение
subset(0, [], []):- !.subset(N, [A | L], [A | S]):- N1 = N - 1, subset(N1, L, S).subset(N, [_ | L], S):- subset(N, L, S).Сколько решений имеет цель subset(2, [1, 2, 3], X) ?
lang(1, prolog).lang(2, python) :- !.lang(3, pascal).print() :- lang(N, L), write(L), nl, fail.print().Сколько названий языков будет напечатано при вызове цели print()?