Top.Mail.Ru
Ответы

Задача по программированию из олимпиады

Ваша задача — разработать алгоритм, который на основании входных данных определит порядок проезда автомобилей через перекресток и вернет его в формате JSON.
Формат ввода
Вы получаете JSON-сообщение от умного регулировщика, содержащее следующую информацию:

• Тип перекрестка (type): может быть обычным ("regular") или T-образным ("T-shaped").

• Перечень приоритетных полос (priority_lanes): массив строк, указывающий, какие полосы движения имеют приоритет. Если список пустой, значит ни одна из полос не имеет приоритет.

• Количество автомобилей на перекрестке (vehicle_count): общее количество автомобилей на перекрестке.

• Информация о каждом автомобиле:

o vehicle_id: уникальный идентификатор автомобиля.

o lane: полоса, на которой находится автомобиль.

o direction: направление, в которое движется автомобиль (например, "west", "north" и т.д.).

Дороги в умном городе могут быть в 8 направления:

• "north" — север,

• "north-east" — северо-восток,

• "east" — восток,

• "south-east" — юго-восток,

• "south" — юг,

• "south-west" — юго-запад,

• "west" — запад,

• "north-west" — северо-запад.

Считать, что каждая дорога имеет 2 полосы движения: в прямом и во встречном направлениях.

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

Любой автомобиль может ехать из любой полосы в любую полосу.

Формат вывода
Ваш алгоритм должен вернуть JSON-ответ, содержащий порядок проезда автомобилей через перекресток. Ответ должен содержать порядок движения автомобилей. Порядок появления автомобилей в ответе сортируется по vehicle_id. В ответе не может несколько раз появиться один и тот же автомобиль, но у разных автомобилей может быть одинаковый приоритет (если они могут двигаться одновременно, не создавая помеху друг другу). При формировании ответа необходимо соблюдать следующую разметку (количество и места пробелов должны строго соответствовать примеру):

Иллюстрация

Пример
Ввод
{
"intersection": {
"type": "regular",
"priority_lanes": ["north", "south"],
"vehicle_count": 4
},
"vehicles": [
{
"vehicle_id": 1,
"lane": "north",
"direction": "west"
},
{
"vehicle_id": 2,
"lane": "east",
"direction": "north"
},
{
"vehicle_id": 3,
"lane": "south",
"direction": "east"
},
{
"vehicle_id": 4,
"lane": "west",
"direction": "south"
}
]
}
Вывод
{
"order": [
{
"vehicle_id": 1,
"priority": 1
},
{
"vehicle_id": 2,
"priority": 1
},
{
"vehicle_id": 3,
"priority": 1
},
{
"vehicle_id": 4,
"priority": 1
}
]
}

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
6мес

слишком много вопросов.
программирование -- не ваше дело.