Анализ JSON c data.mos.ru

В этом задании будут использоваться данные JSON с сайта data.mos.ru. При этом данные будут перекодированы в UTF8, на сайте data.mos.ru данные лежат в кодировке CP1251.

Для изучения структуры JSON, скачанных с data.mos.ru, можете воспользоваться этим online-просмотрщиком JSON или найти другое приложение.

Как всегда, ввод-вывод в задачах этого листка может быть как стандартным, так и файловым (input.txt/output.txt). Используемая кодировка для русских букв: UTF8.

В большинстве задач тесты такие, что ответ однозначный (например, станция с наибольшим числом выходов только одна).

A: Выходы станций метро

Изучите набор данных “Входы и выходы вестибюлей станций Московского метрополитена”.

Под станцией мы будем подразумевать уникальную комбинацию названия станции и названия линии. Например, станция Арбатская Филёвской линии и станция Арбатская Арбатско-Покровской линии — это разные станции.

Определите станцию с самым большим числом выходов, самую северную, самую южную, самую западную, самую восточную станции. Выводите название станции и название линии метро. В первой строке также выведите количество выходов с этой станции.

Пример вывода (неправильный, для некоторого сокращённого набора данных) ниже. Следуйте этому примеру.

Вывод
Больше всего выходов: Красногвардейская, Замоскворецкая линия, 2
Самая северная: Алтуфьево, Серпуховско-Тимирязевская линия
Самая южная: Орехово, Замоскворецкая линия
Самая западная: Строгино, Арбатско-Покровская линия
Самая восточная: Лермонтовский проспект, Таганско-Краснопресненская линия

B: Общественное питание

Изучите набор данных “Общественное питание в Москве”.

Под “заведением” будем подразумевать один объект в этой базе. У заведения бывают разные атрибуты: район, количество посадочных мест, вид (кафе, столовая, ресторан и т.д.). Бывают сетевые заведения.

Найдите район Москвы, в котором находится больше всего заведений. Выведите район и количество заведений в нём.

Определите все виды заведений. Для каждого вида найдите самое большое заведение этого вида. Выведите название заведения и количество мест в нём. Упорядочите строки по виду заведения.

Определите сеть с самым большим числом заведений. Выведите название сети и количество заведений сети.

Определите сеть с самым большим суммарным числом посадочных мест. Выведите название сети и количество мест в заведениях этой сети.

Пример вывода (неправильный, для некоторого сокращённого набора данных) ниже. Следуйте этому примеру.

Вывод
Район с наибольшим числом заведений: Тверской район, 3
Самое большое заведение вида бар: Гадкий кайот, 120
Самое большое заведение вида кафе: Mesto 20.1, 49
Самое большое заведение вида предприятие быстрого обслуживания: KFC, 60
Самое большое заведение вида ресторан: Караоке «City Voice», 112
Самое большое заведение вида столовая: ВЕРОНА СТОЛОВАЯ ШКОЛЫ № 1467, 240
Самая большая сеть по числу заведений: KFC, 3
Самая большая сеть по числу мест: KFC, 80

C: Бассейны

Изучите набор данных “Бассейны плавательные крытые”.

Данные о бассейнах содержат информацию о зимнем и летнем периоде работы. Мы будем рассматривать только летний период.

Вы хотите пойти в бассейн, например, с 08:00 до 09:00 в понедельник. Для этого вы хотите найти бассейн, который работает в это время. Вы любите плавать по длинным дорожкам, поэтому из всех работающих в это время бассейнов вы выберете бассейн с наибольшей длиной дорожки. При равной длине дорожки вы выберете бассейн с наибольшей шириной.

Обратите внимание, что у некоторых бассейнов время закрытия может быть после полуночи, например, 08:00-00:30. Мы же считаем, что вы не любите ходить в бассейн по ночам, поэтому время вашего посещения бассейна будет заканчиваться раньше полуночи. Ну и помимо этого вас могут ждать различные сюрпризы в данных. Поэтому обязательно скачайте оригинальный набор данных и поэкспериментируйте с ним.

Определите бассейн, который вы хотите посетить. В случае нескольких подходящих бассейнов, выведите адрес одного (любого) из них.

В этой задаче входные данные будут отличаться от оригинальных данных с data.mos.ru. А именно, в начало списка бассейнов будет добавлен ещё один объект с информацией о том, когда вы хотите посетить бассейн. Входные данные будут иметь следующий вид:

[    // В начале - объект с информацией о времени посещения
    {'Hours': '08:00-09:00', 'DayOfWeek': 'понедельник'}

    // Затем - объекты с данным о бассейнах с data.mos.ru
    {
        "NameSummer": "бассейн плавательный крытый",
        "global_id": 1047358249
    //  и т.д.
    }
]

Выведите в первой строке через пробел длину и ширину бассейна, в который вы пойдёте. Во второй строке выведите адрес этого бассейна.

Пример вывода (неправильный, для некоторого сокращённого набора данных) ниже. Следуйте этому примеру.

Вывод
25 16
Писцовая улица, дом 12, строение 1

D: Велосипедные дорожки

Вспомните, как считать расстояние между двумя точками на шаре. При этом можно предполагать, что в пределах Москвы поверхность Земли является плоской.

Изучите набор данных “Дорожки велосипедные”.

Найдите самую длинную велодорожку. Выведите описание расположения этой дорожки и её длину в метрах.

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

Пример вывода (неправильный, для некоторого сокращённого набора данных) ниже. Следуйте этому примеру.

Вывод
от Юрловского проезда дом 14 до Сельскохозяйственной дом 64
2251