Главная / Программирование /
Разработка приложений на языке Visual Prolog / Тест 10
Разработка приложений на языке Visual Prolog - тест 10
Упражнение 1:
Номер 1
Значение из поля целых чисел (Integer Control
) можно найти с помощью подцели:
Ответ:
 (1) X
= integerControl_ctl:getText()
 
 (2) X
= integerControl_ctl:getInteger()
 
 (3) integerControl_ctl:setInteger(X)
 
 (4) X
= integerControl_ctl:getValue()
 
Номер 2
Поместить значение 10 в поле целых чисел (Integer Control
) можно с помощью подцели:
Ответ:
 (1) integerControl_ctl:setText(10)
 
 (2) integerControl_ctl:getInteger(10)
 
 (3) integerControl_ctl:setInteger(10)
 
 (4) integerControl_ctl:setText(toString(10))
 
Номер 3
Увеличить на 10 значение, которое записано в поле целых чисел (Integer Control
), можно с помощью подцели:
Ответ:
 (1) integerControl_ctl:setText(getText()
+ 10) 
 (2) integerControl_ctl:setInteger(10)
 
 (3) integerControl_ctl:setInteger(+10)
 
 (4) integerControl_ctl:setInteger(integerControl_ctl:getInteger()
+ 10) 
Упражнение 2:
Номер 1
Укажите решение для цели B
= toBoolean(1
= 2)
Ответ:
 (1) B
= 0 
 (2) B
= 1 
 (3) B
= true
 
 (4) B
= false
 
Номер 2
Укажите решение для цели B
= toBoolean(1
+ 1 = 2)
Ответ:
 (1) B
= 0 
 (2) B
= 1 
 (3) B
= true
 
 (4) B
= false
 
Номер 3
Укажите решение для цели B
= toBoolean(1
= 1)
Ответ:
 (1) B
= 0 
 (2) B
= 1 
 (3) B
= true
 
 (4) B
= false
 
Упражнение 3:
Номер 1
Определение предиката move
имеет вид:
move() = tuple(I, J):-
L = [tuple(0, 0), tuple(0, 1), tuple(0, 2), tuple(1, 0), tuple(1, 1)],
tuple(I, J) in L,
list::all(L, {(tuple(I1, J1)):- math::abs(I - I1) + math::abs(J - J1) <= 2}).
Сколько решений имеет цель X
= move()
?
Ответ:
 (1) 0 
 (2) 1 
 (3) 3 
 (4) 5 
Номер 2
Определение предиката move
имеет вид:
move() = tuple(I, J):-
L = [tuple(0, 0), tuple(0, 1), tuple(0, 2), tuple(1, 0), tuple(1, 1), tuple(1, 2)],
tuple(I, J) in L,
list::all(L, {(tuple(I1, J1)):- math::max(math::abs(I - I1), math::abs(J - J1)) <= 1}).
Сколько решений имеет цель X
= move()
?
Ответ:
 (1) 0 
 (2) 2 
 (3) 4 
 (4) 6 
Номер 3
Определение предиката move
имеет вид:
move() = tuple(I, J):-
L = [tuple(0, 0), tuple(0, 1), tuple(0, 2), tuple(1, 0), tuple(1, 1), tuple(1, 2)],
tuple(I, J) in L,
list::all(L, {(tuple(_, J1)):- math::abs(J - J1)) <= 1}).
Укажите все решения, которые имеет цель X
= move()
?
Ответ:
 (1) X
= tuple
(0, 1); X
= tuple
(1, 1) 
 (2) X
= tuple
(0, 0); X
= tuple
(0, 1); X
= tuple
(1, 0); X
= tuple
(1, 1) 
 (3) X
= tuple
(0, 1); X
= tuple
(1, 0) 
 (4) X
= tuple
(0, 1); X
= tuple
(1, 0); X
= tuple
(1, 2) 
Упражнение 4:
Номер 1
Определение предиката move
имеет вид:
move() = tuple(I, J):-
I = std::fromTo(0, 2), J = std::fromTo(0, 2), math::abs(I - J) < 2.
Сколько решений имеет цель X
= move()
?
Ответ:
 (1) 4 
 (2) 9 
 (3) 7 
 (4) 5 
Номер 2
Определение предиката move
имеет вид:
move() = tuple(I, J):-
I = std::fromTo(0, 2), J = std::fromTo(0, 2), math::abs(I - J) = 2.
Сколько решений имеет цель X
= move()
?
Ответ:
 (1) 2 
 (2) 4 
 (3) 5 
 (4) 9 
Номер 3
Определение предиката move
имеет вид:
move() = tuple(I, J):-
I = std::fromTo(0, 2), J = std::fromTo(0, 2), math::abs(I - J) >= 1.
Сколько решений имеет цель X
= move()
?
Ответ:
 (1) 2 
 (2) 6 
 (3) 4 
 (4) 9 
Упражнение 5:
Номер 1
Укажите все точки, которые принадлежат правильному шестиугольнику с центром в точке (30, 30) и стороной 20:
Ответ:
 (1) (40; 40) 
 (2) (50; 20) 
 (3) (20; 30) 
 (4) (10; 0) 
Номер 2
Укажите набор точек, которые могут являться вершинами правильного шестиугольника с центром в точке (20, 20) и стороной 20:
Ответ:
 (1) (40; 20), (0; 20) 
 (2) (0; 0), (40; 40) 
 (3) (10; 20), (20; 10) 
 (4) (0; 40), (40; 0) 
Номер 3
Укажите точку, которая принадлежат правильному шестиугольнику с центром в точке (40, 40) и стороной 20:
Ответ:
 (1) (20; 15) 
 (2) (30; 50) 
 (3) (35; 65) 
 (4) (15; 60) 
Упражнение 6:
Номер 1
Определение предиката neighbor2
имеет вид:
neighbor2(tuple(I, J)) = tuple(I, J + std::fromToInStep(-2, 2, 4)).
Укажите решение для цели L = [X || X = neighbor2(tuple(2, 2))]
:
Ответ:
 (1) L = [tuple(-2, 2), tuple(-2, 4), tuple(2, 2), tuple(2, 4)]
 
 (2) L = [tuple(2, -2), tuple(2, -1), tuple(2, 0), tuple(2, 1), tuple(2, 2)]
 
 (3) L = [tuple(2, -2), tuple(2, 0), tuple(2, 2)]
 
 (4) L = [tuple(2, 0), tuple(2, 4)]
 
Номер 2
Определение предиката neighbor2
имеет вид:
neighbor2(tuple(I, J)) = tuple(I + std::fromToInStep(-2, 2, 4), J).
neighbor2(tuple(I, J)) = tuple(I, J + std::fromToInStep(-2, 2, 4)).
Сколько решений имеет цель X = neighbor2(tuple(4, 4))?
Ответ:
 (1) 16 
 (2) 6 
 (3) 4 
 (4) 8 
Номер 3
Определение предиката neighbor2
имеет вид:
neighbor2(tuple(I, J)) = tuple(I + std::fromToInStep(-2, 2, 4), J).
Сколько решений имеет цель X = neighbor2(tuple(3, 3))
?
Ответ:
 (1) 2 
 (2) 3 
 (3) 4 
 (4) 5 
Упражнение 7:
Номер 1
Укажите значение переменной X
, которое она примет после вызова подцели
L = [tuple(2, 3, 10), tuple(3, 2, 1), tuple(1, 4, 6), tuple(2, 3, 5)],
tuple(_, _, X) = list::maximum(L).
Ответ:
 (1) 10 
 (2) 1 
 (3) 6 
 (4) 5 
Номер 2
Укажите значение переменной X
, которое она примет после вызова подцели:
L = [tuple(5, 2, 1), tuple(4, 5, 10), tuple(2, 6, 9), tuple(3, 8, 5)],
X = list::maximum(L).
Ответ:
 (1) tuple(5, 2, 1) 
 (2) tuple(4, 5, 10) 
 (3) tuple(2, 6, 9) 
 (4) tuple(3, 8, 5) 
Номер 3
Укажите значение переменной X
, которое она примет после вызова подцели:
L = [tuple(2, 3, 8), tuple(3, 2, 1), tuple(1, 4, 9), tuple(4, 5, 5)],
tuple(_, X, _) = list::minimum(L).
Ответ:
 (1) 2 
 (2) 3 
 (3) 4 
 (4) 5 
Упражнение 8:
Номер 1
Определение предиката coord
имеет вид:
coord() = tuple(I, J):-
I = std::fromTo(-1, 1), J = std::between(I, -2*I).
Сколько решений имеет цель X
= coord()
?
Ответ:
 (1) 4 
 (2) 5 
 (3) 8 
 (4) 9 
Номер 2
Определение предиката coord
имеет вид:
coord() = tuple(I, J):-
I = std::fromToInStep(-1, 1, 2), J = std::betweenInStep(I, -I, 2).
Сколько решений имеет цель X
= coord()
?
Ответ:
 (1) 2 
 (2) 4 
 (3) 3 
 (4) 9 
Номер 3
Определение предиката coord
имеет вид:
coord() = tuple(I, J):-
I = std::fromToInStep(-1, 1, 2), J = std::between(2*I, -I).
Сколько решений имеет цель X
= coord()
?
Ответ:
 (1) 4 
 (2) 5 
 (3) 8 
 (4) 9