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

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

Упражнение 1:
Номер 1
Определение предиката member имеет вид:
member(bt(_, X, _), X).
member(bt(L, _, R), X):- member(L, X); member(R, X). 
 Сколько решений имеет цель member(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X)?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
Определение предиката member имеет вид:
member(bt(_, X, _), X):- !.
member(bt(L, _, R), X):- member(L, X); member(R, X). 
 Сколько решений имеет цель member(bt(bt(leaf, 1, leaf), 2, bt(leaf, 3, leaf)), X) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
Определение предиката member имеет вид:
member(bt(leaf, X, leaf), X).
member(bt(L, _, R), X):- member(L, X); member(R, X). 
 Сколько решений имеет цель member(bt(bt(leaf, 1, leaf), 2, bt(leaf, 3, leaf)), X) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 2:
Номер 1
Определение предиката count имеет вид:
count(leaf, 0).
count(bt(L, _, R), X):- count(L, Y), count(R, Z), X = Y + Z + 1. 
	Какое значение примет переменная X в результате вызова цели count(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
Определение предиката count имеет вид:
count(leaf, 0).
count(bt(leaf, _, leaf), 1):- !.
count(bt(L, _, R), X):- count(L, Y), count(R, Z), X = Y + Z. 
	Какое значение примет переменная X в результате вызова цели count(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
Определение предиката count имеет вид:
count(leaf, 0).
count(bt(L, _, _), X):- count(L, Y), X = Y + 1. 
	Какое значение примет переменная X в результате вызова цели count(bt(bt(leaf, 1, leaf), 2, bt(leaf, 1, leaf)), X) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 3:
Номер 1
Определение предикатов tmember и member имеет вид:
tmember(t(X, _), X).
tmember(t(_, TL), X):- member(T, TL), tmember(T, X).

member(T, [T | _]).
member(T, [_ | L]):- member(T, L). 
 Сколько решений имеет цель tmember(t(1, [t(2, [t(2, [])]), t(1, [])]), X) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
Определение предикатов tmember и member имеет вид:
tmember(t(X, []), X).
tmember(t(_, TL), X):- member(T, TL), tmember(T, X).

member(T, [T | _]).
member(T, [_ | L]):- member(T, L). 
 Сколько решений имеет цель tmember(t(1, [t(2, [t(2, [])]), t(1, [])]), X) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
Определение предикатов tmember и member имеет вид:
tmember(t(X, _), X).
tmember(t(_, TL), X):- member(T, TL), tmember(T, X).

member(T, [T | _]):- !.
member(T, [_ | L]):- member(T, L). 
 Сколько решений имеет цель tmember(t(1, [t(2, [t(2, [])]), t(1, [])]), X) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 4:
Номер 1
Определение предикатов count и count1 имеет вид:
count(t(X, L), Z):- count1(L, Y), Z = Y + X.

count1([], 0).
count1([T | L], Z):- count(T, X), count1(L, Y), Z = X + Y. 
	Какое значение примет переменная S в результате вызова цели  count(t(1, [t(2, [t(2, [])]), t(1, [])]), S) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
Определение предикатов count и count1 имеет вид:
count(t(X, L), Z):- count1(L, Y), Z = Y + X.

count1([], 0).
count1([T | _], Z):- count(T, Z). 
	Какое значение примет переменная S в результате вызова цели count(t(1, [t(2, [t(2, [])]), t(1, [])]), S) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
Определение предикатов count и count1 имеет вид:
count(t(X, []), X):- !.
count(t(_, L), Y):- count1(L, Y).

count1([], 0).
count1([T | L], Z):- count(T, X), count1(L, Y), Z = X + Y. 
	Какое значение примет переменная S в результате вызова цели count(t(1, [t(2, [t(2, [])]), t(1, [])]), S) ?

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 5:
Номер 1
Выберите из списка терм и соответствующий ему домен:
  • t(1, t(2, empty, empty), empty)
  • t(nil, 1, t(nil, 2, nil))
  • tree = t(integer, tree*).
  • bintree{Elem} = t(bintree{Elem}, Elem, bintree{Elem}); nil.

  • Ответ:

     (1) 1, 3 

     (2) 2, 4 

     (3) 1, 4 

     (4) 2, 3 


    Номер 2
    Выберите из списка терм и соответствующий ему домен:
    
  • t(1, [t(2, []), t(3, []), t(4, [])])
  • t(nil, 1, t(nil, 2, nil))
  • tree{A} = t(A, tree{A}*).
  • tree = t(integer, tree, tree); nil.

  • Ответ:

     (1) 1, 3 

     (2) 2, 4 

     (3) 1, 4 

     (4) 2, 3 


    Номер 3
    Выберите из списка терм и соответствующий ему домен:
    
  • t(nil, 1, t(nil, 2, nil))
  • t(1, [t(2, []), t(3, []), t(4, [])])
  • tree = t(string, tree*).
  • tree = t(tree, integer, tree); nil.

  • Ответ:

     (1) 1, 3 

     (2) 2, 4 

     (3) 1, 4 

     (4) 2, 3 


    Упражнение 6:
    Номер 1
    Какое значение примет переменная X в результате вызова цели X = math::restrict(3, 0, 1)?

    Ответ:

     (1)

     (2)

     (3)

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


    Номер 2
    Какое значение примет переменная X в результате вызова цели X = math::restrict(2, 0, 3)?

    Ответ:

     (1)

     (2)

     (3)

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


    Номер 3
    Какое значение примет переменная X в результате вызова цели X = math::restrict(-1, 0, 3)?

    Ответ:

     (1) -1 

     (2)

     (3)

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


    Упражнение 7:
    Номер 1
    В результате вызова S = string::concat("ab", "bc") переменная S примет значение:

    Ответ:

     (1) "abc" 

     (2) "ac" 

     (3) "abbc" 

     (4) "a" 


    Номер 2
    В результате вызова S = string::concat("aa", "bb", "cc") переменная S примет значение:

    Ответ:

     (1) "abc" 

     (2) "aabb" 

     (3) "aacc" 

     (4) "aabbcc" 


    Номер 3
    В результате вызова string::frontToken("  aa-bbcc", X, _) переменная X примет значение:

    Ответ:

     (1) X = "aa-bbcc" 

     (2) X = "aa" 

     (3) X = " aa" 

     (4) X = "a" 


    Упражнение 8:
    Номер 1
    В результате вызова string::splitStringBySeparators("  12-30+15", "+-", X, Y, Z) переменные X, Y и Z примут значения:

    Ответ:

     (1) X = "12", Y = '-', Z = "30+15" 

     (2) X = " 12", Y = '-', Z = "30+15" 

     (3) X = " 12-30", Y = '+', Z = "15" 

     (4) X = "12-30", Y = '+', Z = "15" 


    Номер 2
    В результате вызова string::splitStringBySeparators("Ау  уу!", "!у", X, Y, Z) переменные X, Y и Z примут значения:

    Ответ:

     (1) X = "А", Y = 'у', Z = " уу!" 

     (2) X = "Ау уу", Y = '!', Z = "" 

     (3) X = "Ау", Y = ' ', Z = "уу!" 

     (4) X = "Ау", Y = 'у', Z = "уу!" 


    Номер 3
    В результате вызова S = string::concatWithDelimiter(["1", "000", "000"], ".") переменная S примет значение:

    Ответ:

     (1) ["1", ".", "000", ".", "000"] 

     (2) "1.000.000." 

     (3) "1000000." 

     (4) "1.000.000" 




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