Главная / Программирование /
Основы программирования на языке Visual Prolog / Тест 16
Основы программирования на языке Visual Prolog - тест 16
Упражнение 1:
Номер 1
В чем заключается метод ван Эмдена по выбору хода в игре?
Ответ:
 (1) сделать случайный ход, не приводящий к немедленному проигрышу 
 (2) сделать первый допустимый ход, не приводящий к немедленному проигрышу 
 (3) сделать финальный выигрышный ход или такой ход, чтобы противник в результате не смог выиграть 
 (4) сделать любой допустимый ход, не приводящий к немедленному проигрышу 
Номер 2
Выигрышная позиция в игре – это позиция,
Ответ:
 (1) в которой игрок выиграет, как бы он ни ходил 
 (2) в которой игрок выиграет, если знает, как ходить 
 (3) которая является последней 
 (4) в которой невозможно проиграть 
Номер 3
Проигрышная позиция в игре – это позиция,
Ответ:
 (1) в которой игрок проиграет, как бы ни ходил его противник 
 (2) в которой игрок проиграет, если не знает, как ходить 
 (3) которая является последней в игре 
 (4) в которой игрок проиграет, если его противник знает, как ходить 
Упражнение 2:
Номер 1
Напишите значение, которое примет переменная S
в результате вызова цели S = string::replaceAll("misteri", "i", "Y")
:
Ответ:
 (1) sterymY
 
 (2) mYsterY
 
 (3) stermY
 
 (4) Ysterm
 
Номер 2
Напишите значение, которое примет переменная S
в результате вызова цели S = string::replacePart("prolog", 5, 0, "n")
:
Ответ:
 (1) prolong
 
 (2) long
 
 (3) longpro
 
 (4) prol
 
Номер 3
Напишите значение, которое примет переменная N
в результате вызова цели N = string::search("prolog", "o")
:
Ответ:
 (1) 5
 
 (2) 4
 
 (3) 3
 
 (4) 2
 
Упражнение 3:
Номер 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 
Номер 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 
Номер 3
В игре «Отгадай числа» первым ходит компьютер. Кто выиграет, если требуется угадать три числа и пользователь загадает числа 4, 1 и 2?
Ответ:
 (1) пользователь 
 (2) это зависит от того, что загадал компьютер 
 (3) компьютер 
 (4) заранее нельзя определить 
Упражнение 4:
Номер 1
В результате вызова цели S = frontChar(toLowerCase(trim(" ДА ")))
переменная S
примет значение
Ответ:
 (1) 'д'
 
 (2) 'Д'
 
 (3) не примет никакого значения 
 (4) ' '
 
Номер 2
Признак N присутствует, если в базе данных имеется факт answer(N, 1)
, и отсутствует, если в ней имеется факт answer(N, 0)
. Определение предиката correct
имеет вид:correct(L):- answer(N, 1), not(isMember(N, L)), !, fail; succeed(). Предикат истинен, если
Ответ:
 (1) имеются все необходимые признаки 
 (2) имеется признак, которого нет в списке L 
 (3) нет признаков, которых не было бы в списке L 
 (4) никаких признаков не обнаружено 
Номер 3
Одно из правил, определяющих предикат aks/3
, имеет вид:ask(A, _, [N | _]):- assert(answer(N, A)), fail. Оно соответствует следующему действию:
Ответ:
 (1) отменяется запись в базу данных нового факта 
 (2) в базу данных записывается новый факт и выполняется переход к следующему правилу 
 (3) в базу данных записывается новый факт, если его там не было 
 (4) если вычисления дойдут до этого правила, то вызов предиката ask будет неуспешным.  
Упражнение 5:
Номер 1
Определение предикатов 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)
успешен
Ответ:
 (1) только если P = Pt
 
 (2) если Pt = empty или P = Pt
 
 (3) только если Pt = empty
 
 (4) всегда 
Номер 2
В результате вызова 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
 
Номер 3
Определение предиката middle
имеет вид:middle(nth(I, L), I, L):- I = length(L) div 2. Напишите значение, которое примет переменная X
в результате вызова цели middle(X, _, ["bob", "ann", "tom", "bill"])
:
Ответ:
 (1) mot
 
 (2) lom
 
 (3) tom
 
 (4) tmo
 
Упражнение 6:
Номер 1
Определение предиката member
в PIE имеет вид:member(H, [H | _]).
member(H, [_ | T]):- member(H, T).
Цель L = [_, _], member(1, L)
имеет в PIE следующий набор решений:
Ответ:
 (1) L = [1, _]; L = [_, 1]
 
 (2) L = [1]
 
 (3) Эта цель не имеет решений
 
 (4) L = [1, 1]
 
Номер 2
В результате вызова в PIE цели L = [[1] | _], L = [_, [], 2]
переменная L
примет значение
Ответ:
 (1) [[1], 2 | []]
 
 (2) [[1], _, [], 2]
 
 (3) не примет никакого значения
 
 (4) [[1], [], 2]
 
Номер 3
Определение предиката p в PIE имеет вид:p(X, X). В результате вызова p(Y, Z), p(Z, tom)
переменная Y
примет значение
Ответ:
 (1) не примет никакого значения 
 (2) X
 
 (3) tom
 
 (4) Z
 
Упражнение 7:
Номер 1
Определение предиката conc
в PIE имеет вид:conc(d(A, B), d(B, C), d(A, C)). В результате вызова 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]
 
Номер 2
Определение предиката conc
в PIE имеет вид:conc(d(A, B), d(B, C), d(A, C)). В результате вызова conc(d([1, 2 | X], X), d([2, 3], []), d(L, _))
переменная X
примет значение
Ответ:
 (1) [3]
 
 (2) [1, 2, 2, 3]
 
 (3) []
 
 (4) [2, 3]
 
Номер 3
Определение предиката 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]
 
Упражнение 8:
Номер 1
В результате вызова в PIE цели functor(Term, person, 2), arg(1, Term, bob)
переменная Term
примет значение
Ответ:
 (1) person(bob, _)
 
 (2) person(bob)
 
 (3) person(_, bob)
 
 (4) person(bob, bob)
 
Номер 2
В результате вызова в 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")
 
Номер 3
В результате вызова в 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)