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

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

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

Ответ:

 (1)

 (2)

 (3)

 (4)


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

Ответ:

 (1)

 (2)

 (3)

 (4)


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

Ответ:

 (1)

 (2)

 (3)

 (4)


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

Ответ:

 (1)

 (2)

 (3)

 (4)


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

Ответ:

 (1)

 (2)

 (3)

 (4)


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

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 3:
Номер 1
Определение предикатов 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) ?

Ответ:

 (1) [1, 3] 

 (2) [3, 1] 

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

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


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

Ответ:

 (1) [4, 2] 

 (2) [2, 4] 

 (3) [3, 1] 

 (4) [1, 3] 


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

Ответ:

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

 (2) [4, 2, 5] 

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

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


Упражнение 4:
Номер 1
Предикат сортировки списка list::sort в языке Visual Prolog определяется с помощью алгоритма сортировки

Ответ:

 (1) слиянием 

 (2) быстрой 

 (3) вставками 

 (4) пузырьком 


Номер 2
Предикат сортировки списка по заданному критерию list::sortBy в языке Visual Prolog определяется с помощью алгоритма сортировки

Ответ:

 (1) быстрой 

 (2) вставками 

 (3) слиянием 

 (4) пузырьком 


Номер 3
Сложность O(n log n) имеет алгоритм сортировки

Ответ:

 (1) быстрой 

 (2) вставками 

 (3) слиянием 

 (4) пузырьком 


Упражнение 5:
Номер 1
Цель L = list::map([-1, 2, -3], {(X) = -X})  имеет решение:

Ответ:

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

 (2) [2] 

 (3) [1, -2, 3] 

 (4) [-1, -3] 


Номер 2
Цель L = list::filter([-1, 2, -3], {(X):- X < 0})  имеет решение:

Ответ:

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

 (2) [2] 

 (3) [1, -2, 3] 

 (4) [-1, -3] 


Номер 3
Цель L = list::fold([-1, 2, -3], {(X, S) = S + X}, 0)  имеет решение:

Ответ:

 (1)

 (2) -2 

 (3) -4 

 (4)


Упражнение 6:
Номер 1
Определение предикатов 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) ? 

Ответ:

 (1)

 (2)

 (3)

 (4)


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

Ответ:

 (1)

 (2)

 (3)

 (4)


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

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 7:
Номер 1
Определение предикатов 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 реализует алгоритм

Ответ:

 (1) поиска в глубину 

 (2) поиска в ширину 

 (3) поиска кратчайшего пути в глубину 

 (4) «первый лучший» 


Номер 2
Определение предикатов 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 примет значение:

Ответ:

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

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

 (3) [1, 3, 4] 

 (4) [4, 3, 1] 


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

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 8:
Номер 1
Определение предикатов 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) .

Ответ:

 (1) [1, 3, 4] 

 (2) [1, 2, 4] 

 (3) [4, 2, 1] 

 (4) [4, 3, 1] 


Номер 2
Определение предикатов 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 реализует алгоритм

Ответ:

 (1) поиска в глубину 

 (2) поиска в ширину 

 (3) поиска кратчайшего пути в глубину 

 (4) «первый лучший» 


Номер 3
Определение предикатов 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 реализует алгоритм

Ответ:

 (1) поиска в глубину 

 (2) поиска в ширину 

 (3) поиска кратчайшего пути в глубину 

 (4) «первый лучший» 




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