Главная / Программирование /
Основы программирования на языке Visual Prolog / Тест 3
Основы программирования на языке Visual Prolog - тест 3
Упражнение 1:
Номер 1
Отсечение в запросе используется для того, чтобы запретить поиск альтернативных решений для подцелей, расположенных
Ответ:
 (1) после отсечения 
 (2) до отсечения 
 (3) до и после отсечения 
 (4) иногда до, иногда после отсечения 
Номер 2
Динамическое отсечение используется
Ответ:
 (1) для предотвращения отката при вычислении отдельных подцелей 
 (2) так же, как и статическое 
 (3) вместо статического 
 (4) для предотвращения отката при вычислении каждой подцели 
Номер 3
Отсечение используется:
Ответ:
 (1) для поиска всех альтернативных решений 
 (2) для предотвращения поиска всех решений 
 (3) для запрета процедуры унификации 
 (4) для предотвращения отката после достижения цели 
Упражнение 2:
Номер 1
Отсечение в программе min(X, Y, X):- X < Y, !.
min(X, Y, Y):- X >= Y.
Ответ:
 (1) является зеленым 
 (2) является красным 
 (3) является динамическим 
 (4) не используется при вычислениях 
Номер 2
Отсечение в программе
min(X, Y, X):- Y > X, !.
min(_, Y, Y).
Ответ:
 (1) является зеленым 
 (2) является красным 
 (3) является динамическим 
 (4) не используется при вычислениях 
Номер 3
Программа имеет вид:
male(tom).
male(bob).
Отсечение в запросе male(X), !, male (Y)
Ответ:
 (1) является динамическим  
 (2) является зеленым 
 (3) является красным  
 (4) не используется при вычислении этого запроса 
Упражнение 3:
Номер 1
Предикат likes
определяется следующим образом:
likes(mary, books).
likes(peter, mary).
likes(mary, peter).Цель likes(X, Y), !, likes(Y, Z)
имеет следующее количество решений:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Номер 2
Предикат parent
определяется следующим образом:parent(peter, mary).
parent(mary, ann).
parent(mary, bob).Цель !, parent(X, Y), parent(Y, Z)
имеет следующее количество решений:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Номер 3
Предикат parent
определяется следующим образом:parent(peter, mary).
parent(mary, ann).
parent(mary, bob).
Цель parent(X, Y), !, parent(Y, Z)
имеет следующее количество решений:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Упражнение 4:
Номер 1
Определение предикатa digit
имеет вид:digit(0).
digit(1):- !.
digit(2).
Сколько решений имеет цель digit(X), digit(Y), !, digit(Z)
?
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Номер 2
Определение предиката color
имеет вид:color(red).
color(yellow) :- !.
color(green).
Сколько решений имеет цель color(X), color(Y)
?
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 4 
Номер 3
Определение предиката color
имеет вид:color(red):- !.
color(yellow).
color(green).
Сколько решений имеет цель color(X), !, color(Y)
?
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 4 
Упражнение 5:
Номер 1
Определение предикатa color
имеет вид:color(red).
color(yellow).
color(yellow) :- !.
color(green).
Цель findall(X, color(X), L)
имеет решение:
Ответ:
 (1) L = [red]
 
 (2) L = [red, yellow]
 
 (3) L = [red, yellow, yellow]
 
 (4) L = [red, yellow, green]
 
Номер 2
Определение предикатa color
имеет вид:color(red):- !.
color(yellow).
color(green).
Цель findall(X, color(X), L) имеет решение:
Ответ:
 (1) L = []
 
 (2) L = [red]
 
 (3) L = [red, yellow]
 
 (4) L = [red, yellow, green]
 
Номер 3
Определение предикатa color
имеет вид:color(red).
color(yellow).
color(green):- !.Цель findall(X, color(X), L)
имеет решение:
Ответ:
 (1) L = [red]
 
 (2) L = [red, yellow]
 
 (3) L = [red, yellow, green]
 
 (4) L = [green]
 
Упражнение 6:
Номер 1
Предикаты digit
и triple
определяются следующим образом:digit(0).
digit(1).
triple(t(X, Y, Z)) :- digit(X), digit(Y), digit(Z).
Цель имеет вид: findall(T, triple(T), L)
. Сколько элементов содержит список L?
Ответ:
 (1) 2 
 (2) 3 
 (3) 8 
 (4) 9 
Номер 2
Предикаты 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 
Номер 3
Предикаты 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 
Упражнение 7:
Номер 1
Определение предиката digit
имеет вид:digit(0).
digit(1).В каком порядке будут найдены решения для цели digit(X), digit(Y)
?
X = 0, Y = 0X = 1, Y = 1X = 0, Y = 1X = 1, Y = 0
Ответ:
 (1) 1, 2, 3, 4 
 (2) 1, 3, 4, 2 
 (3) 1, 2, 4, 3 
 (4) 1, 3, 2, 4 
Номер 2
Определение предиката digit
имеет вид:digit(1).
digit(0).
В каком порядке будут найдены решения для цели digit(X), digit(Y)
?
X = 0, Y = 0X = 1, Y = 1X = 0, Y = 1X = 1, Y = 0
Ответ:
 (1) 1, 2, 3, 4 
 (2) 1, 2, 4, 3 
 (3) 2, 4, 1, 3 
 (4) 2, 4, 3, 1 
Номер 3
Определение предикатов 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
Ответ:
 (1) 1, 3, 4, 2 
 (2) 1, 2, 4, 3 
 (3) 1, 2, 3, 4 
 (4) 1, 3, 2, 4 
Упражнение 8:
Номер 1
Определение предикатов 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
. Укажите правильное объявление:
Ответ:
 (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).
 
Номер 2
Определение предикатов 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
:
Ответ:
 (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).
 
Номер 3
Определение предикатов 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
:
Ответ:
 (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.