Главная / Программирование /
Основы программирования на языке 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)