игра брюс 2048
Главная / Программирование / Основы программирования на языке Visual Prolog / Тест 6

Основы программирования на языке Visual Prolog - тест 6

Упражнение 1:
Номер 1
Определение предиката count имеет вид:
		count([_, _ | T], N) :- !, count(T, N1), N = N1 + 1.
count(_, 1).
  Какое значение примет переменная R в результате вызова цели count([1, 2, 3], R)?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
	Определение предиката count имеет вид:count([], 0).
count([_ | T], N) :- count(T, N1), N = N1 + 1.
  Какое значение примет переменная R в результате вызова цели count([1, 2, 3], R)?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
	Определение предиката count имеет вид:count([], 0).
count([_], 1).
count([_, _ | T], N) :- count(T, N1), N = N1 + 2.
  Какое значение примет переменная R в результате вызова цели count([1, 2, 3], R)?

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 2:
Номер 1
	Определение предиката count имеет вид:count([H | T], C, N) :- C1 = C + H, count(T, C1, N).
count([], N, N).
  Какое значение примет переменная R в результате вызова цели count([2, 3, 4], 0, R)?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
	Определение предиката 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)?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
	Определение предиката count имеет вид:count([_, H | T], C, N) :- !, C1 = C + H, count(T, C1, N).
count(_, N, N).
  Какое значение примет переменная R в результате вызова цели count([1, 2, 3], 0, R)?

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 3:
Номер 1
	Определение предиката member имеет вид:member(H, [H | _]).
member(H, [_ | T]) :- member(H, T).
  Сколько решений имеет цель member(X, [2, 3, 4, 5])?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
	Определение предиката member2 имеет вид:member2(H, [_, H | _]).
member2(H, [_, _ | T]) :- member2(H, T).
  Сколько решений имеет цель member2(X, [1, 2, 3, 4, 5])?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
	Определение предиката member1 имеет вид: member1(H, [H | _]).
member1(H, [_, _ | T]) :- member1(H, T).
	Сколько решений имеет цель member1(X, [1, 2, 3, 4, 5])?

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 4:
Номер 1
	Определение предиката member2 имеет вид:member2(H, [_, H | _]):- !.
member2(H, [_, _ | T]) :- member2(H, T).
  Сколько решений имеет цель member2(X, [1, 2, 3, 4])?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
	Определение предиката member1 имеет вид:member1(H, [H, _ | _]).
member1(H, [_, _ | T]) :- !, member1(H, T).
  Сколько решений имеет цель member1(X, [1, 2, 3, 4, 5])?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
	Определение предиката member имеет вид:member(H, [H | _]):- !.
member(H, [ _ | T]) :-  member(H, T).
  Сколько решений имеет цель member(X, [1, 2, 3, 4])?

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 5:
Номер 1
	Определение предиката append имеет вид:append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
  Какое значение примет переменная L в результате вызова append([1, 2], [2, 3], L)?

Ответ:

 (1) [1, 2, 3] 

 (2) [1, 3] 

 (3) [1, 2, 2, 3] 

 (4) [] 


Номер 2
	Определение предиката append имеет вид:append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
  Какое значение примет переменная L в результате вызова append([1, 2, 3], [], L)?

Ответ:

 (1) [1, 2, 3] 

 (2) [] 

 (3) не примет никакого значения 

 (4) [1] 


Номер 3
	Определение предиката append имеет вид:append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
  Сколько решений имеет цель append(L1, L2, [1, 2])?

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 6:
Номер 1
	Определение предиката append имеет вид:append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
  Какое значение примет переменная L в результате вызова append(L, [_, 2], [1, 2, 3])?

Ответ:

 (1) [1] 

 (2) [1, 2] 

 (3) [3] 

 (4) не примет никакого значения 


Номер 2
	Определение предиката append имеет вид: append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
	Сколько решений имеет цель append(L, [_], [1, 2, 3])?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
	Определение предиката append имеет вид: append([], L, L).
append([A | L1], L2, [A | L]) :- append(L1, L2, L).
	Найти предпоследний элемент списка L = [1, 2, 3, 4, 5] можно с помощью цели

Ответ:

 (1) append([_, X], _, L) 

 (2) append([X, _], _, L) 

 (3) append(_, [X, _], L) 

 (4) append(_, [_, X], L) 


Упражнение 7:
Номер 1
	Определение предиката reverse имеет вид:reverse([], L, L).
reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L).
 В результате вызова reverse([1, 2], [3], L) переменная L примет значение

Ответ:

 (1) [3, 2, 1] 

 (2) [2, 1, 3] 

 (3) не примет никакого значения 

 (4) [1, 2, 3] 


Номер 2
	Определение предиката reverse имеет вид:reverse([], L, L).
reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L).
 В результате вызова reverse([1, 2, 2], [], L) переменная L примет значение

Ответ:

 (1) [2, 1, 2] 

 (2) [1, 2, 2] 

 (3) [1, 2, 2] 

 (4) [2, 2, 1] 


Номер 3
	Определение предиката reverse имеет вид:reverse([], L, L).
reverse([A | L1], L2, L) :- reverse(L1, [A | L2], L).
 В результате вызова reverse([1, 2], [3, 4], L) переменная L примет значение

Ответ:

 (1) [2, 1, 3, 4] 

 (2) [4, 3, 2, 1] 

 (3) не примет никакого значения 

 (4) [2, 1, 4, 3] 


Упражнение 8:
Номер 1
	Определение предиката prefix имеет вид:prefix(_, []).
prefix([A | L1], [A | L2]) :- prefix(L1, L2).
Сколько решений имеется для цели refix([1, 2], L)?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
	Определение предиката suffix имеет вид:suffix(L, L).
suffix([_ | L1], L2]) :- suffix(L1, L2).
 Сколько решений имеется для цели suffix([], L)?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
	Определение предиката prefix имеет вид:prefix(_, []).
prefix([A | L1], [A | L2]) :- prefix(L1, L2).
 Сколько решений имеется для цели prefix([1], L)?

Ответ:

 (1)

 (2)

 (3)

 (4)




Главная / Программирование / Основы программирования на языке Visual Prolog / Тест 6