Необходимо написать программу, которая:
Входные данные - заданы два круга:
Общение с сервером происходит POST запросами по следующему url-у: http://contest.elecard.ru/api.
В теле запроса должен находиться json следующего вида:
{
"key":API_KEY_STRING,
"method":METHOD_NAME,
"params":METHOD_PARAMS_OBJECT
}
{
"result": METHOD_RESULT_OBJECT
}
{
"error": {
"code": ERROR_CODE_NUMBER,
"message": ERROR_STRING
}
}
Метод не требует параметров. Пример запроса:
{
"key":"QwH213254532341236GB3423423423423LB8A==",
"method":"GetTasks",
"params":null
}
METHOD_RESULT_OBJECT в ответе представляет из себя массив с параметрами для тестов.
Параметры для индивидуального теста - это еще один вложенный массив (список) объектов, описывающих круги:
{
"x": 4,
"y": 6,
"radius": 2
}
Пример ответа:
{
"result": [
[ //Test #1 circles
{
"x": 0,
"y": 0,
"radius": 0
}
],[ //Test #2 circles
{
"x": -0.4,
"y": 2.2,
"radius": 15
}
],[ //Test #3 circles
{
"x": 1.6,
"y": 2.1,
"radius": 98
},
{
"x": 1.6,
"y": -0.8,
"radius": 78
}
],[ //Test #4 circles
{
"x": -3151.5,
"y": 408.7,
"radius": 739
},{
"x": -712.9,
"y": -1439.4,
"radius": 788
},{
"x": 2990.7,
"y": -2141.1,
"radius": 461
}
]
]
}
В данном примере показаны параметры для четырех тестов. В реальности их будет 9.
METHOD_PARAMS_OBJECT должен представлять из себя массив с результатами для каждого теста. Результаты должны идти в том же порядке, в котором сервер выдал параметры для тестов.
Результат для отдельного теста выглядит следующим образом:
{
"left_bottom":{"x":X2_COORDINATE,"y":Y2_COORDINATE},
"right_top":{"x":X1_COORDINATE,"y":Y1_COORDINATE}
}
Пример запроса (для двух тестов):
{
"key":"QwH213254532341236GB3423423423423LB8A==",
"method":"CheckResults",
"params":[
{
"left_bottom":{"x":0,"y":0},
"right_top":{"x":1,"y":0}
},{
"left_bottom":{"x":-15.4,"y":-12.8},
"right_top":{"x":14.6,"y":17.2}
}
]
}
METHOD_RESULT_OBJECT представляет из себя массив со статусами проверки результатов (true - тест пройден, false - тест не пройден). Пример ответа:
{
"result": [
false,
true,
]
}
Язык программирования: Ruby|GoLang|PHP.
Крайний срок выполнения задания - 1 неделя с момента получения задания.
После успешного прохождения всех тестов, высылайте свой проект. Github приветствуется.