Главная /
Основы программирования на языке Visual Prolog
Основы программирования на языке Visual Prolog - ответы на тесты Интуит
В курсе изучается логическое программирование и язык Пролог. В качестве реализации языка Пролог используется современная версия языка Visual Prolog. Предназначен для начинающих.
Список вопросов:
- # Логическое программирование в широком смысле это:
- # Логическое программирование в узком смысле это:
- # В основу стандарта языка Пролог положен синтаксис
- # Факт – это
- # Запрос – это
- # Программа на языке Пролог – это последовательность
- # Программа имеет вид: likes(mary, books). likes(bob, mary). likes(bob, books). Напишите решение, которое имеет цель likes(X, mary):
- # Программа имеет вид: parent(bob, peter). parent(ann, peter). parent(peter, mary). Напишите значение, которое примет переменная X при вызове parent(X, mary)?
- # Программа имеет вид: parent(bob, peter). parent(ann, bob). parent(peter, mary). Напишите значение, примет переменная X при вызове parent(ann, X)?
- # Программа имеет вид: parent(ann, peter). parent(ann, mary). parent(tom, X) :- parent(ann, X). Сколько решений имеет цель parent(tom, X)?
- # Программа имеет вид: parent(bob, X):- parent(ann, X). parent(ann, peter). parent(peter, mary). Сколько решений имеет цель parent(X, peter)?
- # Программа имеет вид: parent(bob, peter). parent(bob, X):- parent(ann, X). parent(bob, mary). Сколько решений имеет цель parent(bob, X)?
- # Отношение likes определяется следующим образом:likes(bob, X) :- likes(ann, X). likes(ann, books). likes(tom, ann). Укажите весь набор значений, которые примет переменная X в результате вычисления запроса likes(_, X)?
- # Отношение likes определяется следующим образом: likes(ann, books). likes(tom, ann). likes(bob, X) :- likes(ann, X). Укажите весь набор значений, которые примет переменная X в результате вычисления запроса likes(X, _)?
- # Определение предиката parent имеет вид: parent(tom, mary). parent(ann, tom). Отметьте все решения для цели parent(X, _), parent(_, Y):
- # Определение отношения parent имеет вид parent(ann, tom). parent(bob, ann). Обратное отношение к отношению parent можно определить следующим образом:
- # Отношение married определяется в виде: married(tom, mary). married(bob, ann). Симметричное замыкание отношения married можно определить следующим образом:
- # Определение отношения father (отец) имеет вид: father(peter, tom). father(tom, bob). Отношение grandfather (дедушка) можно определить следующим образом:
- # Отношение likes определяется в виде: likes(bob, X) :- likes(ann, X). likes(ann, books). likes(tom, ann). Вариантом правила likes(bob, X) :- likes(ann, X) является правило
- # Результат применения подстановки {X = bob} к формуле f(X, ann, X) равен
- # Отношение likes определяется в виде: likes(bob, X) :- likes(ann, X). likes(ann, books). likes(tom, ann). Основным примером правила likes(bob, X) :- likes(ann, X) является правило
- # Эрбранов универсум логической программыlikes(bob, X) :- likes(ann, X). likes(ann, books). выглядит следующим образом:
- # Эрбранов базис логической программы animal(X) :- bird(X). animal(zebra). bird(swan). выглядит следующим образом:
- # Декларативное значение логической программы animal(X) :- bird(X). animal(zebra). bird(swan). Имеет вид:
- # Определение предиката member имеет вид: 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)?
- # Определение предиката member имеет вид: 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) ?
- # Определение предиката member имеет вид: 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 имеет вид: 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) ?
- # Определение предиката count имеет вид: 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 имеет вид: 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) ?
- # Определение предикатов tmember и member имеет вид: 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) ?
- # Определение предикатов tmember и member имеет вид: 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) ?
- # Определение предикатов tmember и member имеет вид: 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) ?
- # Определение предикатов count и count1 имеет вид: 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 и count1 имеет вид: 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) ?
- # Определение предикатов count и count1 имеет вид: 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) ?
- # Выберите из списка терм и соответствующий ему домен: t(1, t(2, empty, empty), empty) t(nil, 1, t(nil, 2, nil))tree = t(integer, tree*).bintree{Elem} = t(bintree{Elem}, Elem, bintree{Elem}); nil.
- # Выберите из списка терм и соответствующий ему домен: t(1, [t(2, []), t(3, []), t(4, [])]) t(nil, 1, t(nil, 2, nil)) tree{A} = t(A, tree{A}*). tree = t(integer, tree, tree); nil.
- # Выберите из списка терм и соответствующий ему домен: t(nil, 1, t(nil, 2, nil))t(1, [t(2, []), t(3, []), t(4, [])])tree = t(string, tree*).tree = t(tree, integer, tree); nil.
- # Какое значение примет переменная X в результате вызова цели X = math::restrict(3, 0, 1)?
- # Какое значение примет переменная X в результате вызова цели X = math::restrict(2, 0, 3)?
- # Какое значение примет переменная X в результате вызова цели X = math::restrict(-1, 0, 3)?
- # В результате вызова S = string::concat("ab", "bc") переменная S примет значение:
- # В результате вызова S = string::concat("aa", "bb", "cc") переменная S примет значение:
- # В результате вызова string::frontToken(" aa-bbcc", X, _) переменная X примет значение:
- # В результате вызова string::splitStringBySeparators(" 12-30+15", "+-", X, Y, Z) переменные X, Y и Z примут значения:
- # В результате вызова string::splitStringBySeparators("Ау уу!", "!у", X, Y, Z) переменные X, Y и Z примут значения:
- # В результате вызова S = string::concatWithDelimiter(["1", "000", "000"], ".") переменная S примет значение:
- # Пусть грамматика имеет вид: d ::= dd | [(]d[)] | empty, где empty – пустое слово, в квадратных скобках написаны терминальные символы. Укажите те из перечисленных ниже слов, которые из нее выводятся:
- # Пусть грамматика имеет вид: d ::= dd | d[a] | [b], где в квадратных скобках написаны терминальные символы. Укажите те из перечисленных ниже слов, которые из нее выводятся:
- # Пусть грамматика имеет вид: d ::= dd | [a]d[a] | [b], где в квадратных скобках написаны терминальные символы. Укажите те из перечисленных ниже слов, которые из нее выводятся:
- # В результате вызова string::frontToken(" Karl meets Carla.", X, Y)переменные X и Y примут значения:
- # В результате вызова string::frontToken(" 23 + 5", X, Y) переменные X и Y примут значения:
- # В результате вызова string::frontToken(" f(g( a ))", X, Y) переменные X и Y примут значения:
- # Определение предиката scan имеет вид:scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !. scan(_) = []. Какое значение примет переменная S в результате вызова S = scan("f(g(1)).")?
- # Определение предиката scan имеет вид:scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !. scan(_) = []. Какое значение примет переменная S в результате вызова S = scan(" 20 + 2! ")?
- # Определение предиката scan имеет вид:scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !. scan(_) = []. Какое значение примет переменная S в результате вызова S = scan(" The cat likes it. ")?
- # Вне имплементации класса b могут вызываться предикаты, объявленные:
- # Определение предиката пишется:
- # Объявление домена, который можно использовать в других модулях, пишется:
- # В языке Visual Prolog классы могут порождать объекты
- # В языке Visual Prolog предикаты, объявленные в декларации класса
- # Отметьте все верные утверждения. В языке Visual Prolog
- # Определение класса b с интерфейсом b имеет вид: 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())?
- # Определение класса b с интерфейсом b имеет вид: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) ?
- # Определение класса b с интерфейсом b имеет вид: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())?
- # Если пространство состояний моделируется в виде графа, то обычно:
- # Состояниям на графе пространства состояний обычно соответствуют:
- # Если для решения задачи используется граф пространства состояний, то решение является
- # Отметьте верное утверждение. Поиск в глубину на графе пространства состояний обычно используется:
- # Отметьте верное утверждение. Поиск в ширину на графе пространства состояний обычно используется:
- # Отметьте верное утверждение. Состояние в задаче о перевозке через реку полностью описывается парой, содержащей
- # В чем заключается метод ван Эмдена по выбору хода в игре?
- # Выигрышная позиция в игре – это позиция,
- # Проигрышная позиция в игре – это позиция,
- # Напишите значение, которое примет переменная S в результате вызова цели S = string::replaceAll("misteri", "i", "Y") :
- # Напишите значение, которое примет переменная S в результате вызова цели S = string::replacePart("prolog", 5, 0, "n") :
- # Напишите значение, которое примет переменная N в результате вызова цели N = string::search("prolog", "o") :
- # Определение предиката count имеет вид:count(L1, L2) = length(filter(L1, {(X):- isMember(X, L2)})). Какое значение примет переменная L в результате вызова цели L = count([1, 2, 3], [3, 2, 5])?
- # Определение предиката subset имеет вид:subset(0, _) = []:- !. subset(N, [X | L]) = [X | subset(N - 1, L)]. subset(N, [_ | L]) = subset(N, L). Сколько решений имеет цель L = subset(2, [1, 2, 3])?
- # В игре «Отгадай числа» первым ходит компьютер. Кто выиграет, если требуется угадать три числа и пользователь загадает числа 4, 1 и 2?
- # В результате вызова цели S = frontChar(toLowerCase(trim(" ДА "))) переменная S примет значение
- # Признак N присутствует, если в базе данных имеется факт answer(N, 1), и отсутствует, если в ней имеется факт answer(N, 0). Определение предиката correct имеет вид:correct(L):- answer(N, 1), not(isMember(N, L)), !, fail; succeed(). Предикат истинен, если
- # Одно из правил, определяющих предикат aks/3, имеет вид:ask(A, _, [N | _]):- assert(answer(N, A)), fail. Оно соответствует следующему действию:
- # Определение предикатов pet и unif имеет вид: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) успешен
- # В результате вызова memberIndex_nd(X, I, [1, 2, 3]) переменные X и I последовательно примут следующие значения:
- # Определение предиката middle имеет вид:middle(nth(I, L), I, L):- I = length(L) div 2. Напишите значение, которое примет переменная X в результате вызова цели middle(X, _, ["bob", "ann", "tom", "bill"]):
- # Определение предиката member в PIE имеет вид:member(H, [H | _]). member(H, [_ | T]):- member(H, T). Цель L = [_, _], member(1, L) имеет в PIE следующий набор решений:
- # В результате вызова в PIE цели L = [[1] | _], L = [_, [], 2] переменная L примет значение
- # Определение предиката p в PIE имеет вид:p(X, X). В результате вызова p(Y, Z), p(Z, tom) переменная Y примет значение
- # Определение предиката conc в PIE имеет вид:conc(d(A, B), d(B, C), d(A, C)). В результате вызова conc(d([1, 2 | X], X), d([2, 3], []), d(L, _)) переменная L примет значение
- # Определение предиката conc в PIE имеет вид:conc(d(A, B), d(B, C), d(A, C)). В результате вызова conc(d([1, 2 | X], X), d([2, 3], []), d(L, _)) переменная X примет значение
- # Определение предиката 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 примет значение
- # В результате вызова в PIE цели functor(Term, person, 2), arg(1, Term, bob) переменная Term примет значение
- # В результате вызова в PIE цели functor(X, book, 2), arg(1, X, melville), arg(2, X, "Moby-Dick") переменная X примет значение
- # В результате вызова в PIE цели functor(F, animal, 1), functor(B, bird, 1), arg(1, F, B), arg(1, B, swan) переменная F примет значение
- # Конкретизированная переменная – это переменная, которая
- # Свободная переменная унифицируется
- # Анонимная переменная
- # Не унифицируется пара термов
- # Являются унифицируемыми термы
- # Наибольший общий унификатор термов t(X, r(a, b), X) и t(X, r(Y, b), b) равен:
- # Программа имеет вид: male(tom). male(bob). parent(ann, tom). Укажите порядок нахождения решений для цели parent(X, Y); male(Y) 1) Y = tom 2) Y = bob 3) X = ann,Y = tom
- # Программа имеет вид: female(ann). female(mary). male(tom). male(bob). Укажите порядок нахождения решений для цели male(X); female(X) 1) X = ann 2) X = mary 3) X = tom 4) X = bob
- # Программа имеет вид: 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 и h имеет вид: 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 имеет вид: 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 имеет вид: 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):
- # Определение предиката p имеет вид: p([parent(robert, jackson)]). p([parent(ann, smith), parent(thomas, smith)]). Напишите ответ на запрос p([_, parent(_, X)]):
- # Определение предиката p имеет вид: p([father(robert, jackson)]). p([mother(ann, smith), father(thomas, smith)]). Напишите ответ на запрос p([father(_, X) | _]):
- # Определение предиката p имеет вид: p([parent(robert, black)]). p([parent(ann, smith), parent(thomas, smith)]). Напишите ответ на запрос p([parent(X, smith), _]).
- # Определение предикатов likes и male выглядит следующим образом: male(peter). male(bob). likes(peter, bycicle). Напишите решение для цели male(Y), not(likes(Y, _)):
- # Определение предикатов married и female выглядит следующим образом: married(tom, mary). female(mary). female(ann). Напишите решение для цели female(X), not(married(_, X)):
- # Вызов цели not(parent(X, _)) завершается успехом, если цель parent(X, _)
- # Определение предикатов male и parent имеет вид: male(tom). male(bob). parent(tom, mary). parent(tom, ann). Одинаковое ли количество решений имеют цели male(X), parent(X, _) и male(X), not(not(parent(X, _))):
- # Определение предикатов male и parent имеет вид: male(tom). male(bob). parent(tom, mary). parent(tom, ann). Рассмотрим цели not(parent(X, _)), male(X) и male(X), not(parent(X, _)). Отметьте правильное утверждение:
- # Определение предикатов 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], [2, 3]]?
- # Сколько элементов содержит список [[1, 2, 3, 4]]?
- # Сколько элементов содержит список [[], [], [1], [1, 2], [1, 2, 3, 4]]?
- # Список [_] унифицируется:
- # Укажите все списки, с которыми унифицируется список [_, 2 | _]:
- # Список [_, _] унифицируется:
- # С каким списком не унифицируется список [1, 2]?
- # Укажите все списки, с которыми унифицируется список [_, _ | _]?
- # В результате унификации списков [1, 2, 3] и [X, Y | Z] переменные получат значения
- # Отсечение в запросе используется для того, чтобы запретить поиск альтернативных решений для подцелей, расположенных
- # Динамическое отсечение используется
- # Отсечение используется:
- # Отсечение в программе min(X, Y, X):- X < Y, !. min(X, Y, Y):- X >= Y.
- # Отсечение в программе min(X, Y, X):- Y > X, !. min(_, Y, Y).
- # Программа имеет вид: male(tom). male(bob). Отсечение в запросе male(X), !, male (Y)
- # Предикат likes определяется следующим образом: likes(mary, books). likes(peter, mary). likes(mary, peter).Цель likes(X, Y), !, likes(Y, Z) имеет следующее количество решений:
- # Предикат parent определяется следующим образом:parent(peter, mary). parent(mary, ann). parent(mary, bob).Цель !, parent(X, Y), parent(Y, Z) имеет следующее количество решений:
- # Предикат parent определяется следующим образом:parent(peter, mary). parent(mary, ann). parent(mary, bob). Цель parent(X, Y), !, parent(Y, Z) имеет следующее количество решений:
- # Определение предикатa digit имеет вид:digit(0). digit(1):- !. digit(2). Сколько решений имеет цель digit(X), digit(Y), !, digit(Z)?
- # Определение предиката color имеет вид:color(red). color(yellow) :- !. color(green). Сколько решений имеет цель color(X), color(Y)?
- # Определение предиката color имеет вид:color(red):- !. color(yellow). color(green). Сколько решений имеет цель color(X), !, color(Y)?
- # Определение предикатa color имеет вид:color(red). color(yellow). color(yellow) :- !. color(green). Цель findall(X, color(X), L) имеет решение:
- # Определение предикатa color имеет вид:color(red):- !. color(yellow). color(green). Цель findall(X, color(X), L) имеет решение:
- # Определение предикатa color имеет вид:color(red). color(yellow). color(green):- !.Цель findall(X, color(X), L) имеет решение:
- # Предикаты digit и triple определяются следующим образом:digit(0). digit(1). triple(t(X, Y, Z)) :- digit(X), digit(Y), digit(Z). Цель имеет вид: findall(T, triple(T), L). Сколько элементов содержит список L?
- # Предикаты digit и tuple определяются следующим образом:digit(0). digit(1). digit(2). tuple(t(X, Y)) :- digit(X), digit(Y). Цель имеет вид: findall(T, tuple(T), L). Сколько элементов содержит список L?
- # Предикаты digit и tuple определяются следующим образом:digit(0). digit(1). digit(2). tuple(t(X, Y)) :- digit(X), Y = -X. Цель имеет вид: findall(T, tuple(T), L). Сколько элементов содержит список L?
- # Определение предиката digit имеет вид:digit(0). digit(1).В каком порядке будут найдены решения для цели digit(X), digit(Y)? X = 0, Y = 0X = 1, Y = 1X = 0, Y = 1X = 1, Y = 0
- # Определение предиката digit имеет вид:digit(1). digit(0). В каком порядке будут найдены решения для цели digit(X), digit(Y)? X = 0, Y = 0X = 1, Y = 1X = 0, Y = 1X = 1, Y = 0
- # Определение предикатов digit и fruit имеют вид:digit(0). digit(1). fruit(apple). fruit(pear). В каком порядке будут найдены решения для цели digit(X), fruit(Y)?X = 0, Y = appleX = 1, Y = pearX = 0, Y = pearX = 1, Y = apple
- # Определение предикатов parent, grandparent и run имеет вид: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. Укажите правильное объявление:
- # Определение предикатов parent, grandparent и run имеет вид: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:
- # Определение предикатов min и run имеет вид:min(X, Y, X):- X < Y, !.min(X, Y, Y):- X >= Y. run():- min(1, 3, X), write(X), nl, fail; _ = readLine(). Укажите правильное объявление предиката min:
- # Вызов предиката fail
- # Вызов предиката repeat
- # Знак := используется в языке Visual Prolog для присваивания значений
- # Определение предикатов lang и print имеет вид:lang(1, prolog). lang(2, python). lang(3, pascal). print() :- lang(N, L), write(L), nl, N = 2, !. print(). Сколько названий языков будет напечатано при вызове цели print()?
- # Определение предикатов lang и print имеет вид:lang(1, prolog). lang(2, python). lang(3, pascal). print() :- lang(N, L), write(L), nl, fail. print(). Сколько названий языков будет напечатано при вызове цели print()?
- # Определение предикатов lang и print имеет вид:lang(1, prolog). lang(2, python) :- !. lang(3, pascal). print() :- lang(N, L), write(L), nl, fail. print(). Сколько названий языков будет напечатано при вызове цели print()?
- # Определение предикатов fruit и print имеет вид:fruit(1, apple). fruit(2, pear). print() :- fruit(_, X), write(X), nl, fruit(_, Y), write(Y), nl, fail. print(). Напишите название фрукта, которое будет напечатано третьим в результате вызова цели print():
- # Определение предикатов fruit и print имеет вид:fruit(1, apple). fruit(2, pear). print() :- fruit(_, X), fruit(_, Y), write(X), nl, write(Y), nl, fail. print(). Напишите название фрукта, которое будет напечатано третьим в результате вызова цели print():
- # Определение предикатов fruit и print имеет вид: fruit(1, apple). fruit(2, pear). print() :- fruit(N, X), fruit(_, Y), write(X), nl, write(Y), nl, N = 2, !. print(). Напишите название фрукта, которое будет напечатано последним в результате вызова цели print():
- # Определение предиката print имеет вид:print() :- repeat(), write('a'), !. print(). Сколько раз будет напечатан символ 'a' при вызове цели print()?
- # Определение предиката print имеет вид:print() :- write('a'), repeat(), !. print(). Сколько раз будет напечатан символ 'a' при вызове цели print()?
- # Определение предиката print имеет вид: print() :- fail, repeat(), write('a'), !. print(). Сколько раз будет напечатан символ 'a' при вызове цели print()?
- # Определение предикатов fruit и 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 и 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 и 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()?
- # Начальное значение факта-переменной n равно 0. Определение предикатов fruit и print имеет вид:fruit(1, "apple"). fruit(2, "pear"). print() :- repeat(), fruit(_, X), n := n + 1, write(X), nl, n = 4, !. print(). Напишите название фрукта, которое будет напечатано последним при вызове цели print():
- # Начальное значение факта-переменной n равно 0. Определение предикатов fruit и print имеет вид:fruit(1, "apple"). fruit(2, "pear"). print() :- repeat(), n := n + 1, fruit(_, X), write(X), nl, n = 2, !. print(). Напишите название фрукта, которое будет напечатано последним при вызове цели print():
- # Начальное значение факта-переменной n равно 0. Определение предикатов fruit и print имеет вид:fruit(1, "apple"). fruit(2, "pear"). print() :- repeat(), fruit(_, X), write(X), nl, n := n + 1, n = 3, !. print(). Напишите название фрукта, которое будет напечатано последним при вызове цели print():
- # Добавляет факт в начало внутренней базы данных предикат:
- # Укажите все предикаты, которые добавляют факт в конец внутренней базы данных:
- # Укажите все предикаты, которые используются для добавления фактов во внутреннюю базу данных:
- # Укажите все предикаты, которые используются для удаления фактов из внутренней базы данных:
- # Укажите предикат, который может возвращать сведения из фактов, удаляемых из внутренней базы данных:
- # Укажите предикат, который удаляет все записи из внутренней базы данных:
- # Определение предиката go имеет вид: go(2):- !. go(N):- write('a'), N1 = N - 1, go(N1). Сколько раз будет напечатан символ 'a' в результате вызова цели go(5)?
- # Определение предиката go имеет вид: go(N):- N > 1, !, write('a'), N1 = N - 1, go(N1). go(_). Сколько раз будет напечатан символ 'a' в результате вызова цели go(5)?
- # Определение предиката go имеет вид: go(N):- write('a'), N > 3, !, N1 = N - 1, go(N1). go(_). Сколько раз будет напечатан символ 'a' в результате вызова цели go(5)?
- # Определение предиката go имеет вид: go(2):- write('a'), fail. go(N):- N > 1, write('a'), N1 = N - 1, go(N1). go(_). Сколько раз будет напечатан символ 'a' в результате вызова цели go(4)?
- # Определение предиката go имеет вид: go(2):- fail. go(N):- N > 1, write('a'), N1 = N - 1, go(N1). go(_). Сколько раз будет напечатан символ 'a' в результате вызова цели go(4)?
- # Определение предиката go имеет вид: go(0). go(N):- N > 0, N1 = N - 1, go(N1), write('a'). Сколько раз будет напечатан символ 'a' в результате вызова цели go(2)?
- # Определение предикатов parent и anc имеет вид: parent(tom, ann). parent(ann, bob). anc(X, Y):- parent(X, Y). anc(X, Z):- parent(X, Z), anc(Z, Y). Сколько решений имеет цель anc(X, Y)?
- # Определение предикатов parent и anc имеет вид: parent(tom, ann). parent(ann, bob). anc(X, Y):- parent(X, Y). anc(X, Z):- parent(X, Z), anc(Z, Y). Сколько решений имеет цель anc(tom, X)?
- # Определение предикатов parent и anc имеет вид: parent(tom, ann). parent(ann, bob). anc(X, Y):- parent(X, Y). anc(X, Z):- parent(X, Z), anc(Z, Y). Сколько решений имеет цель anc(X, ann)?
- # Определение предиката f имеет вид: f(0, 3):- !. f(X, R):- X1 = X - 1, f(X1, R1), R = R1 + 2. Какое значение примет переменная Y в результате вызова цели f(2, Y)?
- # Определение предиката f имеет вид: f(0, 2):- !. f(X, R):- X1 = X - 1, f(X1, R1), R = R1 * 3. Какое значение примет переменная Y в результате вызова цели f(2, Y)?
- # Определение предиката f имеет вид: f(0, 1):- !. f(X, R):- X1 = X - 1, f(X1, R1), R = 2 * R1 + 1. Какое значение примет переменная Y в результате вызова цели f(2, Y)?
- # Определение предиката g имеет вид: g(0, R, R):- !. g(X, C, R):- X1 = X - 1, C1 = C * 2, g(X1, C1, R). Какое значение примет переменная Y в результате вызова цели g(2, 3, Y)?
- # Определение предиката g имеет вид: g(0, R, R):- !. g(X, C, R):- X1 = X - 1, C1 = 2 * C + 1, g(X1, C1, R). Какое значение примет переменная Y в результате вызова цели g(2, 2, Y)?
- # Определение предиката g имеет вид: g(0, R, R):- !. g(X, C, R):- X1 = X - 1, C1 = 3 * C, g(X1, C1, R). Какое значение примет переменная Y в результате вызова цели g(2, 1, Y)?
- # Определение функции f имеет вид: f(0, R) = R:- !. f(X, C) = f(X - 2, C * C). Какое значение примет переменная Y в результате вызова цели Y = f(4, 2)?
- # Определение функции f имеет вид: f(1, R) = R:- !. f(X, C) = f(X - 3, C * C - 1). Какое значение примет переменная Y в результате вызова цели Y = f(7, 2)?
- # Определение функции f имеет вид: f(0, R) = R:- !. f(X, C) = f(X - 1, C * C - 2). Какое значение примет переменная Y в результате вызова цели Y = f(2, 2)?
- # Определение предиката num имеет вид: num(X, X). num(X, Y) :- X < 2, X1 = X + 1, num(X1, Y). Сколько решений имеет цель num(-1, X)?
- # Определение предиката num имеет вид: num(X, X). num(X, Y) :- X > 0, X1 = X - 1, num(X1, Y). Сколько решений имеет цель num(4, X)?
- # Определение предиката num имеет вид: num(X, X). num(X, Y) :- X > 0, X1 = X - 2, num(X1, Y). Сколько решений имеет цель num(5, X)?
- # Определение предиката num имеет вид: num(X, _, X). num(X, C, Y) :- X > 0, X1 = X - C, num(X1, C, Y). Сколько решений имеет цель num(3, 2, X)?
- # Определение предиката num имеет вид: num(X, _, _, X). num(X, Z, S, Y) :- X < Z, X1 = X + S, num(X1, Z, S, Y). Сколько решений имеет цель num(2, 3, 2, X)?
- # Определение предиката num имеет вид: num(X, _, _, X). num(X, Z, S, Y) :- X > Z, X1 = X - S, num(X1, Z, S, Y). Сколько решений имеет цель num(5, 3, 1, X)?
- # Определение предиката count имеет вид: count([_, _ | T], N) :- !, count(T, N1), N = N1 + 1. count(_, 1). Какое значение примет переменная R в результате вызова цели count([1, 2, 3], R)?
- # Определение предиката count имеет вид:count([], 0). count([_ | T], N) :- count(T, N1), N = N1 + 1. Какое значение примет переменная R в результате вызова цели count([1, 2, 3], R)?
- # Определение предиката count имеет вид:count([], 0). count([_], 1). count([_, _ | T], N) :- count(T, N1), N = N1 + 2. Какое значение примет переменная R в результате вызова цели count([1, 2, 3], R)?
- # Определение предиката count имеет вид:count([H | T], C, N) :- C1 = C + H, count(T, C1, N). count([], N, N). Какое значение примет переменная R в результате вызова цели count([2, 3, 4], 0, R)?
- # Определение предиката count имеет вид: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)?
- # Определение предиката count имеет вид:count([_, H | T], C, N) :- !, C1 = C + H, count(T, C1, N). count(_, N, N). Какое значение примет переменная R в результате вызова цели count([1, 2, 3], 0, R)?
- # Определение предиката member имеет вид:member(H, [H | _]). member(H, [_ | T]) :- member(H, T). Сколько решений имеет цель member(X, [2, 3, 4, 5])?
- # Определение предиката member2 имеет вид:member2(H, [_, H | _]). member2(H, [_, _ | T]) :- member2(H, T). Сколько решений имеет цель member2(X, [1, 2, 3, 4, 5])?
- # Определение предиката member1 имеет вид: member1(H, [H | _]). member1(H, [_, _ | T]) :- member1(H, T). Сколько решений имеет цель member1(X, [1, 2, 3, 4, 5])?
- # Определение предиката member2 имеет вид:member2(H, [_, H | _]):- !. member2(H, [_, _ | T]) :- member2(H, T). Сколько решений имеет цель member2(X, [1, 2, 3, 4])?
- # Определение предиката member1 имеет вид:member1(H, [H, _ | _]). member1(H, [_, _ | T]) :- !, member1(H, T). Сколько решений имеет цель member1(X, [1, 2, 3, 4, 5])?
- # Определение предиката member имеет вид:member(H, [H | _]):- !. member(H, [ _ | T]) :- member(H, T). Сколько решений имеет цель member(X, [1, 2, 3, 4])?
- # Определение предиката append имеет вид:append([], L, L). append([A | L1], L2, [A | L]) :- append(L1, L2, L). Какое значение примет переменная L в результате вызова append([1, 2], [2, 3], L)?
- # Определение предиката append имеет вид:append([], L, L). append([A | L1], L2, [A | L]) :- append(L1, L2, L). Какое значение примет переменная L в результате вызова append([1, 2, 3], [], L)?
- # Определение предиката append имеет вид:append([], L, L). append([A | L1], L2, [A | L]) :- append(L1, L2, L). Сколько решений имеет цель append(L1, L2, [1, 2])?
- # Определение предиката append имеет вид:append([], L, L). append([A | L1], L2, [A | L]) :- append(L1, L2, L). Какое значение примет переменная L в результате вызова append(L, [_, 2], [1, 2, 3])?
- # Определение предиката append имеет вид: append([], L, L). append([A | L1], L2, [A | L]) :- append(L1, L2, L). Сколько решений имеет цель append(L, [_], [1, 2, 3])?
- # Определение предиката append имеет вид: append([], L, L). append([A | L1], L2, [A | L]) :- append(L1, L2, L). Найти предпоследний элемент списка L = [1, 2, 3, 4, 5] можно с помощью цели
- # Определение предиката reverse имеет вид:reverse([], L, L). reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L). В результате вызова reverse([1, 2], [3], L) переменная L примет значение
- # Определение предиката reverse имеет вид:reverse([], L, L). reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L). В результате вызова reverse([1, 2, 2], [], L) переменная L примет значение
- # Определение предиката reverse имеет вид:reverse([], L, L). reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L). В результате вызова reverse([1, 2], [3, 4], L) переменная L примет значение
- # Определение предиката prefix имеет вид:prefix(_, []). prefix([A | L1], [A | L2]) :- prefix(L1, L2). Сколько решений имеется для цели refix([1, 2], L)?
- # Определение предиката suffix имеет вид:suffix(L, L). suffix([_ | L1], L2]) :- suffix(L1, L2). Сколько решений имеется для цели suffix([], L)?
- # Определение предиката prefix имеет вид:prefix(_, []). prefix([A | L1], [A | L2]) :- prefix(L1, L2). Сколько решений имеется для цели prefix([1], L)?
- # Определение предиката select имеет вид: select(A, [A | L], L). select(A, [B | L], [B | L1]):- select(A, L, L1). Сколько решений имеет цель select(X, [1, 2, 2], L) ?
- # Определение предиката select имеет вид: select(A, [A | L], L). select(A, [B | L], [B | L1]):- select(A, L, L1), A <> B. Сколько решений имеет цель select(X, [2, 1, 2], L) ?
- # Определение предиката select имеет вид: select(A, [A | L], L). select(A, [B | L], [B | L1]):- select(A, L, L1). Сколько решений имеет цель select(0, L, [1, 2, 3]) ?
- # Определение предиката subset имеет вид: subset([], []). subset([A | L], [A | S]):- subset(L, S). subset([_ | L], S):- subset(L, S). Сколько решений имеет цель subset([1, 2, 3], X) ?
- # Определение предиката subset имеет вид: 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) ?
- # Определение предиката subset имеет вид: 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) ?
- # Определение предикатов intersection и member имеет вид: 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) ?
- # Определение предикатов difference и member имеет вид: 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) ?
- # Определение предикатов union и member имеет вид: 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) ?
- # Предикат сортировки списка list::sort в языке Visual Prolog определяется с помощью алгоритма сортировки
- # Предикат сортировки списка по заданному критерию list::sortBy в языке Visual Prolog определяется с помощью алгоритма сортировки
- # Сложность O(n log n) имеет алгоритм сортировки
- # Цель L = list::map([-1, 2, -3], {(X) = -X}) имеет решение:
- # Цель L = list::filter([-1, 2, -3], {(X):- X < 0}) имеет решение:
- # Цель L = list::fold([-1, 2, -3], {(X, S) = S + X}, 0) имеет решение:
- # Определение предикатов arc и conn имеет вид: arc(1, 2). arc(1, 3). arc(3, 4). conn(X, X). conn(X, Z):- arc(X, Y), conn(Y, Z). Сколько решений имеет цель conn(1, X) ?
- # Определение предикатов arc и conn имеет вид: arc(1, 2). arc(1, 3). arc(3, 4). conn(X, X). conn(X, Z):- arc(X, Y), conn(Y, Z). Сколько решений имеет цель conn(X, 4) ?
- # Определение предикатов arc и conn имеет вид: 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 и path имеет вид: 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 имеет вид: 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 и path имеет вид: 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) ?
- # Определение предикатов arc, cont и path имеет вид: 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) .
- # Определение предикатов arc, cont и path имеет вид: 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 имеет вид: 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 реализует алгоритм