/tasker

test tasks

Primary LanguageGoApache License 2.0Apache-2.0

tasker

Тестовые задания

Выбор библиотек и фреймворков остается на усмотрение решающего.

Результатом выполнения считается ссылка на репозиторий.

Сервис хранения событий

Ваша задача написать сервис, который реализует API создания и завершения разных событий. События могут быть разных типов. В базе данных может быть только одно незавершенное событие одного типа.

Методы API

POST /v1/start

Тело запроса:

{
    "type": "..."
}
  • type может содержать только строчные буквы латинского алфавита и цифры

Метод создает событие переданного типа. Если в базе уже есть незавершенное событие переданного типа, то новое событие создавать не нужно, и в ответ не должно приходить сообщение об ошибке.

POST /v1/finish

Тело запроса:

{
    "type": "..."
}

Метод завершает событие переданного типа. Если незавершенного события такого типа в БД не найдено, должна вернуться 404 ошибка.

База данных

База данных должна быть MongoDB. События всех типов должны хранится отдельными документами в одной коллекции.

Пример документа в коллекции:

{
    "_id": "...",
    "type": "...",
    "state": 0, // state 0 - для незавершенных событий, 1 - для завершенных
    "started_at": "...", // Время начала события
    "finished_at": "...", // Время завершения события
}

Если необходимо, документ может быть расширен.

Задача о кенгуру

Есть два кенгуру на оси координат, готовые прыгать в одном направлении (например, в положительном направлении). Первый кенгуру находится в положении x1 и прыгает на расстояние v1 за прыжок. Анологично с первым кенгуру, второй находится изначально в положении x2 и прыгает на v2 за прыжок. По заданным начальным положениям и скоростям можете ли вы определить окажутся ли они в одном месте в одно и тоже время?

Входные данные​

Stdin с четырьми целыми числами, разделенными пробелом формата: x1 v1 x2 v2

Ограничения​

  • − 10000 ≤ x1, x2 ≤ 10000
  • − 10000 ≤ v1, v2 ≤ 10000

Формат вывода​

В stdout YES, если кенгуру могут встретится в одном месте в одно и тоже время. И NO в обратном случае.

Примеры​

Вход: 0 3 4 2

Результат: YES

Вход: 0 2 5 3

Результат: NO